在我的 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
当单击多选列表框时,多选微调器/ ListView 会显示在对话框中,如下所示:
http://img835.imageshack.us/img835/711/listboxmulti.png
所以我的问题是:
- 这个允许在模态对话框中进行多选的小部件(在上面的最后一张图片中)是什么。我确信这一定是 Android 平台上已经可用的组件,因为它正在浏览器中显示。
- 甚至浏览器中的微调器(在前 2 个图像中)看起来也与我在我的应用程序中看到的默认微调器不同。浏览器是否会将自定义皮肤/颜色应用到它显示的 Spinners 的背景和文本?
最佳答案
如果有人感兴趣,这里是代码:
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();
关于Android - 如何将列表框实现为模态对话框/弹出窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5412592/