在webview中显示文本的问题用粗体和make new line android

时间:2015-01-27 04:11:31

标签: android webview

你好朋友我有一个文本值,其内容为粗体,正常样式所以我在我的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();

当我运行上面的代码时,它就像下面的输出一样 enter image description here

在这张图片中,它不是粗体,而且在网页视图中的br标签有什么想法我能解决吗?

1 个答案:

答案 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");