你好朋友我有一个文本值,其内容为粗体,正常样式所以我在我的string.xml文件中写下这个文本,如下所示
<string name="setting_messages">
<![CDATA[
<b>Default Selection</b><br>
<p>My TEXT</p> <br>
<b>Deleted Property</b> <br>
<p>MyText</p><br>
<b>Upgrade Package</b> <br>
<p>1. Line one.</p><br>
<p>2. Line Two.</p><br>
]]></string>
在我的java文件中,我称之为Web视图,如下所示
String formattedText = getString(R.string.setting_messages);
Spanned result = Html.fromHtml(formattedText);
String htmlText = "<html><body style=\"text-align:center\">"+result+" </body></Html>";
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(getActivity());
alertDialogBuilder.setTitle("Help");
WebView wv = new WebView(getActivity());
wv.loadData(String.format(htmlText, result), "text/html", "utf-8");
alertDialogBuilder
.setCancelable(true)
.setNegativeButton("Cancel", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
}
}) ;
alertDialogBuilder.setView(wv);
AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.show();
当我运行上面的代码时,它就像下面的输出一样
在这张图片中,它不是粗体,而且在网页视图中的br标签有什么想法我能解决吗?
答案 0 :(得分:1)
这一行:
String htmlText = "<html><body style=\"text-align:center\">"+result+" </body></Html>";
实际上与:
相同String htmlText = "<html><body style=\"text-align:center\">"+result.toString()+" </body></Html>";
在Spannable对象上调用toString()将删除所有格式。这是您丢失粗体文本和换行符的地方。
您可以像这样格式化字符串,而无需先转换为Spannable:
String htmlText = "<html><body style=\"text-align:center\">"+formattedText+" </body></Html>";
然后将其直接传递给WebView:
wv.loadData(htmlText, "text/html", "utf-8");