2012-03-09 7 views

risposta

8

Certo, è possibile utilizzare Dialog.setContentView() per impostare il contenuto di una finestra di dialogo come un layout arbitrario.

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

Renditi un file di layout con un LinearLayout verticale che ha i pulsanti che si desidera in esso e chiamare setContentView sulla vostra finestra, passando il nome del file di layout.

Se siete deadset su AlertDialog si può fare qualcosa di simile 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

Perfetto ... grazie! – Ahmed

6

c'è stata una setItems() chiamata che fa questo dal livello di API 1. Non c'è ragione per creare un costume finestra di dialogo a meno che non si desideri modificare l'aspetto degli elementi.

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 su questo: non è possibile chiamare setMessage in caso di avviso, se non si vedranno gli articoli. –

+1

Grande codice. Dovresti dire che crea pulsanti verticali perché ho pensato prima che questo creasse quelli orizzontali. – yshahak

+0

Buon punto, ma come li stili? – Calin

Problemi correlati