2012-03-09 9 views

Odpowiedz

8

Oczywiście, można użyć opcji Dialog.setContentView(), aby ustawić zawartość okna dialogowego na dowolny układ.

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

Zrób sobie plik układ z pionowym LinearLayout który ma przyciski, które mają w niej i nazywają setContentView na oknie, przekazując nazwę pliku układu.

Jeśli jesteś deadset na AlertDialog można zrobić coś podobnego z 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

Idealnie ... dziękuję! – Ahmed

6

nastąpił setItems() połączenia, które wykonuje to od poziomu API 1. Nie ma powodu, aby utworzyć niestandardowy w oknie dialogowym, chyba że chcesz zmienić wygląd i styl elementów.

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

Jedna uwaga na ten temat: nie można wywołać metody setMessage w alarmie, jeśli nie zobaczysz elementów. –

+1

Świetny kod. Powinieneś wspomnieć, że tworzy on pionowe przyciski, ponieważ najpierw pomyślałem, że stworzy to poziomy. – yshahak

+0

Dobra uwaga, ale jak je stylizujesz? – Calin

Powiązane problemy