2012-03-09 7 views

Respuesta

8

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

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

Hazte un archivo de diseño con un LinearLayout vertical que tiene los botones que desee en ella y llamar a setContentView en su diálogo, pasando el nombre de su archivo de diseño.

Si está ajustado en fábrica para el AlertDialog puede 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(); 
+0

Perfecto ... ¡gracias! – Ahmed

6

ha habido un setItems() llamada que hace esto ya que el nivel de API 1. No hay razón para crear una costumbre cuadro de diálogo a menos que desee cambiar el aspecto 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(); 
+4

Una nota al respecto: no se puede llamar a setMessage en la alerta; si lo hace, no verá los elementos. –

+1

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

+0

Buen punto, pero ¿cómo los estilo? – Calin

Cuestiones relacionadas