【问题标题】:Android - How to implement a listbox as a modal dialog/popupAndroid - 如何将列表框实现为模式对话框/弹出窗口
【发布时间】:2011-07-21 17:17:07
【问题描述】:

在我的 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. 即使是浏览器中的 Spinner(前 2 张图片中)看起来也与我在应用程序中看到的默认 Spinner 不同。浏览器是否会对其显示的 Spinner 的背景和文本应用自定义皮肤/颜色?

【问题讨论】:

  • 别介意第二个问题.. 我的应用程序是为比我设备上安装的操作系统更旧的版本构建的。这就解释了旋转器的不同外观。

标签: android listview listbox dialog spinner


【解决方案1】:

以下是代码,以防有人感兴趣:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-26
      • 2012-01-04
      • 1970-01-01
      • 2021-09-13
      • 1970-01-01
      • 2023-04-05
      • 2011-01-12
      相关资源
      最近更新 更多