在Android警报对话框中使用HTML

问题描述 投票:18回答:6

我在对话框中显示了一些信息。它就像Title,然后在它下面;标题,然后在它下面的文字。同样明智的是,有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:或者我使用了错误的方法?错误的对话框?

java android eclipse android-alertdialog
6个回答
48
投票

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

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

你也看到所有HTML tags supported by TextView


7
投票

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

msg.setMovementMethod(LinkMovementMethod.getInstance());
msg.setClickable(true);

7
投票

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


2
投票

试试这个,字体颜色,

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

字体下划线,

   String source = <u>Message</u>

 msg.setText(Html.fromHtml(source));

2
投票

如果你需要添加更复杂的HTML,使用CSSMETA,你可以在对话框中添加一个WebView,如下所示:

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

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


0
投票

万一你需要它。最好使用HtmlCompat.fromHtml((htmlString, 0)与旧版本兼容。

© www.soinside.com 2019 - 2024. All rights reserved.