老套路先看效果图:
WebView加载带有转移字符的HTML源码
再看转义后的字符的效果图:
先看WebView加载HTML源码的方法如下:
webview.loadDataWithBaseURL(null, html源码, "text/html", "utf-8", null);
如上图如果HTML中带有转义字符加载出来就会跟第一张效果图一样,这样需要我们手动转义一下。目前有两种方法
方法一:可将转义字符替换下:(不推荐因为HTML的转义字符太多了)
htmlData = htmlData.replaceAll("&", "");
htmlData = htmlData.replaceAll(""", "\"");
htmlData = htmlData.replaceAll("<", "<");
htmlData = htmlData.replaceAll(">", ">");
htmlData = htmlData.replaceAll("nbsp;", " ");
方法二:(极力推荐)
方法二经本人多次测试如果进行图文混排文字和图片在同一行不换行可能出现图片无法显示出来
if (!TextUtils.isEmpty(htmlData)) {
Spanned spanned = null;
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) {
//使用HTML的方法转义,api24以上方法
spanned = Html.fromHtml(htmlData, Html.FROM_HTML_MODE_COMPACT);
} else {
//使用HTML的方法转义,api24以下方法
spanned = Html.fromHtml(htmlData);
}
MCLog.e("打印HTML源码", spanned.toString());
wvReadMsgContent.loadDataWithBaseURL(null, spanned.toString(), "text/html", "utf-8", null);
//数据加载后隐藏缩放按钮
wvReadMsgContent.getSettings().setDisplayZoomControls(false);
}
如果看着乱我贴下源码:ReadMessageActivity.java
package com.mchsdk.paysdk.activity;
import android.os.Bundle;
import android.text.Html;
import android.text.Spanned;
import android.view.View;
import android.view.WindowManager;
import android.webkit.WebView;
import android.widget.ImageView;
import android.widget.TextView;
import com.lidroid.xutils.exception.HttpException;
import com.lidroid.xutils.http.RequestParams;
import com.mchsdk.paysdk.bean.DeleteMsgBean;
import com.mchsdk.paysdk.bean.GotMsgByIdParam;
import com