Android - Как реализовать список в виде модального диалога / всплывающего окна - PullRequest
3 голосов
/ 24 марта 2011

В моем приложении для Android, когда пользователь нажимает кнопку, я хочу, чтобы поле со списком отображалось как модальное диалоговое окно, точно так же, как работает Spinner, за исключением того, что поле со списком может также разрешать несколько вариантов выбора.Я попытался использовать ListView, как описано в учебнике по android hello-listview (http://developer.android.com/resources/tutorials/views/hello-listview.html).). К сожалению, он не работает так, как я ожидал. Он не отображается как модальный диалог, такой как Spinner.Я попытался посмотреть, что делает браузер Android, когда нужно отобразить список. Я зашел на сайт www.functionx.com/html/lesson14.htm в браузере на моем устройстве Android и увидел следующее поведение (и это именно такЯ хочу, чтобы в моем приложении):

При нажатии на выпадающий список / выпадающий список в HTML появляется блесна, как показано на изображении здесь:
http://img842.imageshack.us/img842/803/htmlcombobox.png
Когда один выборпо щелчку по списку, снова появляется счетчик, как показано здесь:
http://img13.imageshack.us/img13/3355/listboxsingle.png
И когда щелкают по списку с множественным выбором, многократный просмотр / просмотр списка появляется в диалоговом окне, как показано здесь:
http://img835.imageshack.us/img835/711/listboxmulti.png
Итак, мои вопросы:

  1. Что это за виджет (на последнем изображении выше), который позволяет многократный выбор в модальном диалоговом окне.я уверен, что это должно быть комponent уже доступен на платформе Android, так как он отображается в браузере.
  2. Даже Spinner (в первых 2 изображениях) в браузере выглядят иначе, чем Spinner по умолчанию, который я вижу в своем приложении.Будет ли браузер применять собственные скины / цвета к фону и тексту отображаемых спиннеров?

Ответы [ 2 ]

15 голосов
/ 25 марта 2011

Вот код, если кому-то интересно:

new AlertDialog.Builder(this)
            .setMultiChoiceItems(R.array.select_dialog_items,
                    new boolean[]{false, true, false, true, false, false, false},
                    new DialogInterface.OnMultiChoiceClickListener() {
                        public void onClick(DialogInterface dialog, int whichButton,
                                boolean isChecked) {

                            /* User clicked on a check box do some stuff */
                        }
                    })
            .setPositiveButton(R.string.alert_dialog_ok,
                    new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int whichButton) {

                    /* User clicked Yes so do some stuff */
                }
            })
            .setNegativeButton(R.string.alert_dialog_cancel,
                    new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int whichButton) {

                    /* User clicked No so do some stuff */
                }
            })
           .show();
3 голосов
/ 24 марта 2011

Проверьте пример проекта ApiDemos, действие AlertDialogSamples .Есть кнопка с надписью «Повторить тревогу», которая вызывает модальное диалоговое окно со списком с множественным выбором.

В любом случае, хорошее место для начала будет AlertDialog.Builder.

...