AlertDialog的setSingleChoiceItems方法不显示选项问题求助
解决AlertDialog单选选项不显示的问题
问题出在你同时调用了setMessage()和setSingleChoiceItems()——AlertDialog的布局中,消息文本区域和单选列表区域是互斥的,调用setMessage()会占据列表的显示位置,导致选项无法展示。
只需要移除setMessage("Message")这一行代码,单选选项就能正常显示了。修正后的代码如下:
final CharSequence[] options = {"item1", "item2", "item3"}; AlertDialog.Builder builder2 = new AlertDialog.Builder(this); builder2.setTitle("Title") .setIcon(R.mipmap.icon) .setSingleChoiceItems(options, 0, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Log.d("Selection", "Something selected"); } }) .setPositiveButton("Accept", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(MainActivity.this, "Toast1", Toast.LENGTH_SHORT).show(); } }) .setNegativeButton("Decline", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(MainActivity.this, "Toast2", Toast.LENGTH_SHORT).show(); } }).create(); Button btnDialog2 = (Button) findViewById(R.id.btnDialog2); btnDialog2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { builder2.show(); } });
如果确实需要在对话框中显示提示文本,可以考虑:
- 将提示内容合并到
setTitle()中,比如setTitle("Title\nMessage") - 使用自定义布局(通过
setView()方法)来同时展示文本和单选列表
内容的提问来源于stack exchange,提问作者Commodus
相关产品推荐
相关产品推荐

