Можем ли мы иметь вертикальные кнопки в диалоговом окне оповещения Android? - PullRequest
6 голосов
/ 10 марта 2012

По умолчанию мы получаем две или три кнопки, которые выровнены по горизонтали в диалоговом окне предупреждения.Можно ли их выровнять по вертикали в диалоговом окне предупреждения?

Ответы [ 2 ]

8 голосов
/ 10 марта 2012

Конечно, вы можете использовать Dialog.setContentView(), чтобы установить содержимое диалога в качестве произвольного макета.

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

Создайте файл макета с вертикальной линейной компоновкой, в которой есть нужные вам кнопки, и вызовите setContentView() в диалоговом окне, передав имя файла макета.

Есливы застряли на AlertDialog вы можете сделать что-то подобное с 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();
6 голосов
/ 15 мая 2013

Был вызов setItems (), который делает это начиная с уровня API 1. Нет причин создавать пользовательское диалоговое окно, если вы не хотите изменять внешний вид элементов.

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();
...