在我的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
所以我的问题是:
答案 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
。