Android:AlertDialog消息不会自动换行在SDK< 11

时间:2013-02-03 16:30:24

标签: android alertdialog

我遇到了AlertDialog我以编程方式构建的问题:它的消息在运行4.1.2的模拟器中正确显示。但是在我的设备(运行2.3.7的华为U8510)上,该消息不会自动换行。

我可以在代码中添加任何内容,以便AlertDialog允许其消息包装吗?我显然不想添加手动换行符。 (问题是,即使我添加手动换行符,Dialog也只显示第一行)

我想我在这里错过了一些东西,但我无法在任何地方找到答案 - 它们都是指手动添加换行符。

这是相关的代码(是的,我现在使用硬编码的叮咬):

AlertDialog.Builder builder= new AlertDialog.Builder( activity );
builder.setPositiveButton( ...
builder.setNegativeButton( ...
builder.setTitle( "Wirklich löschen?" );
builder.setMessage( "Soll das Item \"" + deleteItem + "\" wirklich gelöscht werden?" );
AlertDialog dialog= builder.create();
dialog.show();

以下是截图。您可以在模拟器(大图像)上看到消息如何正确包装,但不能在设备上查看。

Device (2.3.7)

Emulator (4.1.2)

3 个答案:

答案 0 :(得分:3)

我不确定问题是什么,或者它是特定于设备还是什么,但我可以建议解决这种情况..您可以创建一个带有textview的自定义布局和底部的两个按钮并附加该布局到这个对话框。现在,您可以根据需要处理文本视图...

答案 1 :(得分:1)

我最近在从Android Studio移回Eclipse的项目中遇到了这个问题。

在这种情况下,问题是没有定义minSdkVersion。如果您未声明此属性,系统将采用默认值“1”,表示您的应用程序与所有Android版本兼容。

显然API级别1(甚至比Cupcake 1.5更早)没有包装AlertDialog消息文本。

通过添加

解决了这个问题
<uses-sdk android:minSdkVersion="16" />

到Android Manifest。 16(minly Bean)的minSdkVersion是此应用程序所需的。我不知道AlertDialog何时开始包装消息文本,但早期的API级别,例如10(姜饼)也可能有用。

另一方面,其他人发现在早期版本的Android上使用Theme.Holo会导致此问题,例如: Android TextView's stopped wrapping text

答案 2 :(得分:0)

如果您希望在所有Android版本中保持一致的外观,则应考虑使用自定义布局。

在这种情况下,一个简单的TextView应该完成这项工作。您可以设置样式,对齐和修改文本外观以匹配您需要的任何内容。

<强> custom_dialog.xml

<TextView
    android:id="@+id/custom_dialog_message"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textColor="@color/white"
    android:textSize="20sp" />

然后使用以下方法将其应用于对话框:

dialog.setContentView(R.layout.custom_dialog);