3

我以AlertDialog编程方式构建时遇到问题:它的消息在运行 4.1.2 的模拟器中正确显示。但在我的设备(运行 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)

4

3 回答 3

3

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

于 2013-02-03T16:58:43.773 回答
1

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

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

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

问题已通过添加解决

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

到 Android 清单。此应用程序需要 minSdkVersion 为 16(Jelly Bean)。我不知道 AlertDialog 何时开始包装消息文本,但早期的 API 级别,例如 10 (Gingerbread) 也可能有效。

另外,其他人发现在早期版本的 Android 上使用 Theme.Holo 可能会导致此问题,例如 Android TextView 停止换行文本

于 2015-10-24T02:22:15.437 回答
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);
于 2013-02-03T17:30:53.157 回答