Android:SDK版本小于11时,AlertDialog消息不会自动换行

3
我在使用程序构建的AlertDialog时遇到了一个问题:在运行Android 4.1.2的模拟器上,消息显示正确。但是在我的设备(运行Android 2.3.7的华为U8510)上,消息没有自动换行。
有什么我可以添加到代码中,使AlertDialog允许其消息换行吗?我显然不想添加手动换行符。(问题是,即使我添加手动换行符,对话框也只会显示第一行)
我想我可能是漏掉了什么,但我找不到任何答案 - 它们都涉及手动添加换行符。
以下是相关代码(是的,现在我正在使用硬编码的字符串):
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();

以下是屏幕截图。您可以看到消息在模拟器上正确换行(大图片),但在设备上未正确显示。

设备(2.3.7)

模拟器(4.1.2)


我认为你的意思是使用“wrap”而不是“break”... - theomega
非常感谢您编辑了问题。我会准确地进行翻译。 - Felizett
3个回答

3

我不确定问题出在哪里,或者它是否与设备有关,但我可以为这种情况提供一种解决方法.....您可以创建一个带有TextView和两个按钮的自定义布局,并将该布局附加到此对话框。现在您可以根据需要处理TextView...


1

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

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

显然,API级别1(甚至比杯子蛋糕1.5还要早)没有包装AlertDialog消息文本。

通过添加以下内容解决了问题

<uses-sdk android:minSdkVersion="16" />

将其添加到Android清单中。该应用程序需要minSdkVersion为16(Jelly Bean)。我不知道AlertDialog何时开始包装消息文本,但早期的API级别例如10(Gingerbread)也可能有效。
另外,其他人发现在较早的Android版本上使用Theme.Holo可能会导致此问题,例如 Android TextView's stopped wrapping text

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);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接