0

我有一个这样定义的 AlertDialog:

final CharSequence[] items = { "Red", "Green", "Blue", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten" };

AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Pick a color");

builder.setSingleChoiceItems(items, 0, new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int item) {

        // Set items uncheckable

        Toast.makeText(getApplicationContext(), items[item], Toast.LENGTH_SHORT).show();

    }
});

builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {

    @Override
    public void onClick(DialogInterface dialog, int which) {
        // TODO Auto-generated method stub

    }
});

AlertDialog alert = builder.create();
alert.show();

第一个问题

是否可以将某些项目标记为不可检查?虽然我向用户展示了各种项目,但用户理解这些项目存在,但其中一些是不可检查的。

第二个问题

如果有办法完成我的第一个问题,是否可以将不可检查的项目设为灰色?

谢谢,

收藏夹

4

2 回答 2

0

也许是这样的:

(AlertDialog)builder.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(false); 

这是另一种方式:

Button button = dialog.getButton(AlertDialog.BUTTON_POSITIVE);
button.setEnabled(false)

看看这是否有效。还要确保你这样做,builder.create();before alert.show()

编辑:对于我认为您可以使用getListView()的列表项,您可以访问可检查的选项,并使用setEnabled(false)

于 2012-08-01T18:24:12.763 回答
0

您必须选择一个特定的子项,然后禁用它:

ListView list = ((AlertDialog) dialog).getListView();
list.getChildAt(item).setEnabled(false);
于 2014-04-18T23:42:31.123 回答