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

Bet*_*eta 3 android listview dialog listbox 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(在前2个图像中)看起来与我在我的应用程序中看到的默认Spinner不同.浏览器是否会将自定义皮肤/颜色应用于它显示的Spinners的背景和文本?

Bet*_*eta 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();
Run Code Online (Sandbox Code Playgroud)