52

AlertDialog用 an创建一个AlertDialog.Builder并用setItems(). 显示对话框,但我看不到任何项目。我看到的只是消息。

final CharSequence[] items = {"Red", "Green", "Blue"};

AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(activity);
dialogBuilder.setMessage("Pick a color");
dialogBuilder.setItems(items, new DialogInterface.OnClickListener() {        
    public void onClick(DialogInterface dialog, int which) {
        // Do anything you want here
    }    
});

dialogBuilder.create().show();

如果我设置PositiveButton,我可以看到那个按钮就好了。我也尝试过设置MultiChoiceItemsSingleChoiceItems但这些都不起作用。

4

7 回答 7

184

使用setTitle而不是setMessage设置消息正文并覆盖项目列表。

于 2012-05-23T07:09:56.433 回答
2

你为什么不去setTitle代替setMessage呢?尝试使用setTitle("Pick a color").

我希望它会帮助你。

于 2012-05-23T07:19:54.883 回答
1

尝试alertDialogBuilder.setCustomTitle(view)

于 2016-05-25T19:12:08.093 回答
1

如果你想设置消息项目,只需使用setCustomTitle()这样的TextView

dialogBuilder.setCustomTitle(TextView(context).apply {
    setPadding(
       16.dpToPx().toInt(),
       16.dpToPx().toInt(),
       16.dpToPx().toInt(),
       0
    )
    setText(it.message)
    setTextColor(Color.BLACK)
    textSize = 18f
})
dialogBuilder.setItems(...)

请注意,您不能以这种方式设置标题,但您当然可以创建自定义标题布局,支持同时设置标题消息。

dpToPx()只是一个简单的转换扩展功能,不在您的问题范围内,但为了完整起见:

@JvmOverloads
@Dimension(unit = Dimension.PX)
fun Number.dpToPx(
    metrics: DisplayMetrics = Resources.getSystem().displayMetrics
): Float {
    return toFloat() * metrics.density
}
于 2020-05-05T11:49:29.503 回答
0

使用下面的代码: -

final CharSequence[] items = {"Red", "Green", "Blue"};
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(activity);
dialogBuilder.setTitle("Pick a color");
dialogBuilder.setItems(items, new DialogInterface.OnClickListener() {

    public void onClick(DialogInterface dialog, int which) {
        // Do anything you want here
    }

});
dialogBuilder.create().show();
于 2012-05-23T07:11:54.667 回答
0

试试这个

final CharSequence[] items = {"Red", "Green", "Blue"};
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(activity);
dialogBuilder.setTitle("Pick a color");
dialogBuilder.setSingleChoiceItems(items,-1, new DialogInterface.OnClickListener()
@Override
public void onClick(DialogInterface dialog, int which) 
{
}
});
dialogBuilder.show();
于 2012-05-23T07:16:05.723 回答
0

如果您使用的是资源字符串数组,则必须包含资源打包。context().getResources().getStringArray(R.array.items);

我的列表没有通过使用 R.array.items 显示,直到我给指针上下文和资源打包。

祝你好运!

于 2016-08-11T21:20:59.083 回答