AlertDialog的项目未显示

时间:2012-05-23 06:55:24

标签: android alertdialog

我使用AlertDialog创建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,但这些都不起作用。

7 个答案:

答案 0 :(得分:142)

使用setTitle代替设置邮件正文的setMessage并覆盖项目列表。

答案 1 :(得分:2)

为什么不选择setTitle代替setMessage?试试setTitle("Pick a color")

我希望它会对你有所帮助。

答案 2 :(得分:1)

尝试alertDialogBuilder.setCustomTitle(view)

答案 3 :(得分:1)

如果要设置消息 AND 项目,只需将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
}

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

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

答案 6 :(得分:0)

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

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

祝你好运!