如何使用多行标题构建警报对话框?

时间:2012-02-02 04:08:10

标签: android android-layout android-widget

Android警报对话框中是否可以有多行标题?我尝试了几个解决方案,但没有一个适合我。我总是以标题显示3点(...)字符串。 任何有关相同代码的示例代码或工作示例都将受到高度赞赏。

5 个答案:

答案 0 :(得分:28)

您需要使用builder.setCustomTitle():

AlertDialog.Builder builder = new AlertDialog.Builder(context);
TextView textView = new TextView(context);
textView.setText("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur " +
                "tincidunt condimentum tristique. Vestibulum ante ante, pretium porttitor " +
                "iaculis vitae, congue ut sem. Curabitur ac feugiat ligula. Nulla " +
                "tincidunt est eu sapien iaculis rhoncus. Mauris eu risus sed justo " +
                "pharetra semper faucibus vel velit.");
builder.setCustomTitle(textView);

文档在这里:AlertDialog.builder

enter image description here

答案 1 :(得分:2)

这是设置标题的方法

AlertDialog.Builder builder = new  AlertDialog.Builder(Class name.this);
    builder.setTitle("Welcome to App,\n There are no App.\n Add a new data.");

答案 2 :(得分:1)

在我看来,这是一个更简洁的解决方案。

对话主题:

<style name="CustomDialogTheme" parent="ThemeOverlay.MaterialComponents.Dialog.Alert">
    <item name="materialAlertDialogTitleTextStyle">@style/TitleStyle</item>
</style>

标题样式:

<style name="TitleStyle" parent="@style/MaterialAlertDialog.MaterialComponents.Title.Text">
    <item name="android:maxLines">3</item>
    <item name="android:singleLine">false</item>
</style>

在代码中:

MaterialAlertDialogBuilder(context, R.style.CustomDialogTheme)
    .setTitle("Long title...")
    .show()

PS:您也可以指定不同的数字,不一定是 3。或者随意使用您想要的样式。

答案 3 :(得分:0)

如果您使用警告对话框,则标题可以包含最大 2行,否则您必须使用自定义对话框。

答案 4 :(得分:-1)

实际上这里的“正确”答案是错误的。事实证明,您可以在AlertDialog中将最大行数设置为2以上。这是一个例子:

AlertDialog closePlayerDialog;
.........
Builder builder = new AlertDialog.Builder(this);
builder.setMessage(getString(R.string.AskToClosePlayer))
       .setPositiveButton(R.string.Yes, dialogClickListener)
       .setNeutralButton(R.string.NoJustCloseApp, dialogClickListener)
       .setNegativeButton(R.string.NoContinue, dialogClickListener);
closePlayerDialog = builder.create();
closePlayerDialog.setOnShowListener(new DialogInterface.OnShowListener() {
    public void onShow(DialogInterface dialog) {
        float textSize = 12.0f;
        Button positive = closePlayerDialog.getButton(AlertDialog.BUTTON_POSITIVE);
        positive.setTextSize(TypedValue.COMPLEX_UNIT_DIP, textSize);
        positive.setMaxLines(3);
        Button neutral = closePlayerDialog.getButton(AlertDialog.BUTTON_NEUTRAL);
        neutral.setTextSize(TypedValue.COMPLEX_UNIT_DIP, textSize);
        neutral.setMaxLines(3);
        Button negative = closePlayerDialog.getButton(AlertDialog.BUTTON_NEGATIVE);
        negative.setTextSize(TypedValue.COMPLEX_UNIT_DIP, textSize);
        negative.setMaxLines(3);
    }
});
closePlayerDialog.setCancelable(false);     
closePlayerDialog.show();

基本上,您使用onShow编辑AlertDialog的组件DialogInterface.onShowListener