在 Android Alert Dialog 中使用 HTML

2022-09-01 12:23:04

我有一定数量的信息要显示在对话框中。它像标题一样出现,然后在它下面有文本;标题,然后在其下方文本。与明智一样,有4个标题和4个描述要显示。它应该像这样来

标题一

description;description;description;description;description;description;description;description;description;description;description;description;description;description;description;description;description

标题二

description;description;description;description;description;description;description;description;description;description;description;description;description;description;description;description;description

如您所见,有粗体文本,带下划线的文本,换行符等。我想将这种文本添加到警报框中,因此以下是我尝试过的内容。

TextView msg = new TextView(this);
msg.setText("<html><u>Message</u></html>")

AlertDialog.Builder ab = new AlertDialog.Builder(this);
ab.setTitle("Title");
ab.setView(msg);
ab.setCancelable(false);

//rest of the code

然而,这个技巧没有奏效。发生的事情是,所有的HTML标签都按原样显示出来!而且文字还不清楚!似乎它与AlertBox的默认颜色的背景混合在一起,黑色。我该如何解决这个问题?请帮忙!

PS:还是我用错了方法?错误的对话框?


答案 1

您需要使用 Html.fromHtml() 将 HTML 标记用作:TextView

msg.setText(Html.fromHtml("<u>Message</u>"))

您还可以看到TextView支持的所有HTML标签


答案 2

事实证明,您实际上并不需要任何额外的TextViews来执行此操作。只需将 HTML 包含在警报的 “setMessage()” 调用中(该调用将替换问题中的 “setView()” 调用),并将其传递给 html 格式的字符串。请确保仅在格式中使用 、 和,因为这些是它支持的唯一标记。如果对警报中的文本使用 String 资源,请调用而不是 ,否则标记将从字符串中完全剥离。<b><u><i>getResources().getText(R.id.yourHtmlString)getResources().getString(R.id.yourHtmlString)


推荐