27

我有一些信息要显示在对话框中。它像标题,然后在它下面的文本;标题,然后在它下面的文字。同样,要显示 4 个标题和 4 个描述。它应该是这样的

标题一

描述;描述;描述;描述;描述;描述;描述;描述;描述;描述;描述;描述;描述;描述;描述

标题二

描述;描述;描述;描述;描述;描述;描述;描述;描述;描述;描述;描述;描述;描述;描述

如您所见,有粗体文本、下划线文本、换行符等。我想将这种文本添加到警告框中,所以下面是我尝试过的。

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:还是我用错了方法?错误的对话框?

4

6 回答 6

62

您将需要Html.fromHtml()在 as 中使用 HTML 标记TextView

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

您还可以看到TextView.

于 2013-02-01T18:40:42.823 回答
16

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

于 2015-07-29T19:18:28.130 回答
9

如果要添加链接并使其可点击,

msg.setMovementMethod(LinkMovementMethod.getInstance());
msg.setClickable(true);
于 2013-02-02T04:19:09.727 回答
4

如果您需要添加更复杂HTML的 ,CSSMETA,您可以WebView在对话框中添加 a ,如下所示:

String webViewString = yourMeta + yourCss + yourHtml;
yourCustomWebView.loadData(webViewString, "text/html; charset=UTF-8",
                    null);
yourAlertDialog.setView(yourCustomWebView);

这样,您可以在对话框中显示完全格式化的 HTML 页面。

于 2015-01-02T17:56:38.850 回答
2

试试这个,字体颜色,

   String source = "<b><font color=#ff0000> Loading. Please wait..."
                + "</font></b>";

字体下划线,

   String source = <u>Message</u>

 msg.setText(Html.fromHtml(source));
于 2013-02-01T18:48:28.603 回答
1

如果你需要的话。更好地HtmlCompat.fromHtml((htmlString, 0)用于与旧版本的兼容性。

于 2019-03-18T16:23:38.713 回答