我在对话框中显示了一些信息。它就像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:或者我使用了错误的方法?错误的对话框?
您将需要使用Html.fromHtml()
在TextView
中使用HTML标记:
msg.setText(Html.fromHtml("<u>Message</u>"))
如果要添加链接并使其可单击,
msg.setMovementMethod(LinkMovementMethod.getInstance());
msg.setClickable(true);
事实证明,您实际上并不需要任何额外的TextView来执行此操作。只需在警报的“setMessage()”调用中包含HTML(它替换了您的问题中的“setView()”调用)并将其传递给html格式的字符串。请务必在格式化中仅使用<b>
,<u>
和<i>
,但因为它们是它支持的唯一标签。如果您使用字符串资源作为警报中的文本,请调用getResources().getText(R.id.yourHtmlString)
而不是getResources().getString(R.id.yourHtmlString)
,否则标签将从字符串中完全剥离。
试试这个,字体颜色,
String source = "<b><font color=#ff0000> Loading. Please wait..."
+ "</font></b>";
字体下划线,
String source = <u>Message</u>
msg.setText(Html.fromHtml(source));
如果你需要添加更复杂的HTML
,使用CSS
和META
,你可以在对话框中添加一个WebView
,如下所示:
String webViewString = yourMeta + yourCss + yourHtml;
yourCustomWebView.loadData(webViewString, "text/html; charset=UTF-8",
null);
yourAlertDialog.setView(yourCustomWebView);
这样,您就可以在对话框中显示完全格式化的HTML页面。
万一你需要它。最好使用HtmlCompat.fromHtml((htmlString, 0)
与旧版本兼容。