2012-08-01 56 views
0

我有一个AlertDialog这样定义的:的Android 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(); 

第一个问题

是否有可能标志着一些项目,如uncheckable的? 尽管我展示了各种项目,但用户知道这些项目存在但其中一些项目无法检测。

第二个问题

如果有一种方法来完成我的第一个问题,是有可能把变灰是uncheckable项目?

感谢,

favolas

回答

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)

+0

谢谢,但我指的是'CharSequence []'上的项目。例如,将“Red”,“One”和“Five”项目设置为不可检查并变灰(或其他颜色) – Favolas 2012-08-01 18:51:25

+0

我明白你的意思了。看看我的编辑也许有帮助。 – 0gravity 2012-08-01 19:03:57

+0

嗨。感谢,但'ListView list =((AlertDialog)对话框).getListView();''list.setEnabled(false);'使ALL列表禁用,不仅仅是列表中的所需项目。它平淡地禁用列表上的滚动... – Favolas 2012-08-02 08:28:40

0

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

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