Android AlertDialog项目未被点击

时间:2012-08-01 18:16:56

标签: android alertdialog

我有这样定义的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();

第一个问题

是否可以将某些项目标记为不可检查? 虽然我正在展示各种项目,但我知道用户知道这些项目存在但其中一些是无法检查的。

第二个问题

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

谢谢,

favolas

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分:0)

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

ListView list = ((AlertDialog) dialog).getListView();
list.getChildAt(item).setEnabled(false);