Android - 如何将列表框实现为模式对话框/弹出窗口

时间:2011-03-23 22:43:46

标签: android listview listbox dialog spinner

在我的Android应用中,当用户点击按钮时,我希望列表框显示为模式对话框,就像Spinner的工作方式一样,除了列表框还可以允许多个选择。我尝试使用Android hello-listview教程(http://developer.android.com/resources/tutorials/views/hello-listview.html)中描述的ListView。不幸的是,它似乎没有像我预期的那样工作。它不会像Spinner那样显示为模态对话框。我试着看看Android浏览器在显示列表框时的作用。我在Android设备的浏览器中浏览了www.functionx.com/html/lesson14.htm并看到了以下行为(这正是我在我的应用中想要的行为):

单击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. 这个小部件(在上面的最后一张图片中)是什么,允许在模态对话框中进行多选。我确信这必须是Android平台上已有的组件,因为它已在浏览器中显示。
  2. 浏览器中的Spinners(前两张图片)看起来与我在应用中看到的默认Spinner不同。浏览器是否会将自定义皮肤/颜色应用于它显示的Spinners的背景和文本?

2 个答案:

答案 0 :(得分:15)

以下是任何人都感兴趣的代码:

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

答案 1 :(得分:3)

检查ApiDemos示例项目AlertDialogSamples activity。有一个标有“重复警报”的按钮,可以调用带有多选列表的模态对话框。

无论如何,一个好的起点是AlertDialog.Builder