¿Podemos tener botones verticales en un cuadro de diálogo de alerta de Android?

De forma predeterminada, tenemos dos o tres botones alineados horizontalmente en un cuadro de diálogo de alerta. ¿Es posible tenerlos alineados verticalmente dentro del cuadro de diálogo de alerta?

preguntado el 09 de marzo de 12 a las 21:03

2 Respuestas

Claro, puedes usar Dialog.setContentView() para configurar el contenido de un diálogo para que sea un diseño arbitrario.

Dialog dialog = new Dialog(this);
dialog.setContentView(R.layout.yourLayoutId);
dialog.show();

Cree un archivo de diseño con un LinearLayout vertical que tenga los botones que desea y llame setContentView() en su cuadro de diálogo, pasando el nombre de su archivo de diseño.

Si estás muerto en AlertDialog puedes hacer algo similar con builder.setView()

LayoutInflater inflater = (LayoutInflater) 
        getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View layout = inflater.inflate(R.layout.yourLayoutId,
        (ViewGroup) findViewById(R.id.yourLayoutRoot));
AlertDialog.Builder builder = new AlertDialog.Builder(this)
.setView(layout);
AlertDialog alertDialog = builder.create();
alertDialog.show();

Respondido 23 Abr '18, 18:04

Ha habido una llamada a setItems() que hace esto desde el nivel 1 de API. No hay razón para crear un cuadro de diálogo personalizado a menos que desee cambiar la apariencia de los elementos.

CharSequence[] items =  {"Foo", "Bar", "FooBar"};
new AlertDialog.Builder(activity)
.setTitle("Choose a widget")
.setItems(items, new DialogInterface.OnClickListener()
{
     @Override
     public void onClick(DialogInterface dialog, int which)
     {
         switch(which)
         {
             case FOO:
             // foo case
             break;

             ....
         }
     }
}
.create().show();

contestado el 15 de mayo de 13 a las 20:05

Una nota sobre esto: no puede llamar a setMessage en la alerta, si lo hace, no verá los elementos. - Sofi Software LLC

Gran código. Debe mencionar que crea botones verticales porque primero pensé que esto crearía botones horizontales. - yshahak

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.