在 webview 中用粗体显示文本并换行时出现问题 android
issue in dispaly text in webview with bold and make new line android
你好,朋友们,我有一个内容为粗体、普通样式的文本值,所以我将这段文本写在我的 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 文件中,我调用如下所示的网络视图
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 标签,我知道我该如何解决它吗?
这一行:
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");
你好,朋友们,我有一个内容为粗体、普通样式的文本值,所以我将这段文本写在我的 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 文件中,我调用如下所示的网络视图
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 标签,我知道我该如何解决它吗?
这一行:
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");