Android开发之WebView加载HTML源码包含转义字符实现富文本显示的方法

老套路先看效果图:

WebView加载带有转移字符的HTML源码

再看转义后的字符的效果图:

先看WebView加载HTML源码的方法如下:

 webview.loadDataWithBaseURL(null, html源码, "text/html", "utf-8", null);

如上图如果HTML中带有转义字符加载出来就会跟第一张效果图一样,这样需要我们手动转义一下。目前有两种方法

方法一:可将转义字符替换下:(不推荐因为HTML的转义字符太多了)

htmlData = htmlData.replaceAll("&", "");
htmlData = htmlData.replaceAll(""", "\"");
htmlData = htmlData.replaceAll("&lt;", "<");
htmlData = htmlData.replaceAll("&gt;", ">");
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
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果 HTML 富文本的表格没有显示网格,可能是因为表格的 CSS 样式设置了边框为 0,或者是因为浏览器默认的样式将表格的边框隐藏了。为了显示表格网格,可以在 HTML 富文本添加 CSS 样式,或者在 Android 设置 `WebSettings` 相关属性。 在 HTML 富文本添加 CSS 样式的示例代码如下: ```html <!DOCTYPE html> <html> <head> <style> table { border-collapse: collapse; border: 1px solid black; } th, td { border: 1px solid black; padding: 5px; } </style> </head> <body> <table> <tr> <th>Header 1</th> <th>Header 2</th> </tr> <tr> <td>Data 1</td> <td>Data 2</td> </tr> </table> </body> </html> ``` 在 Android 设置 `WebSettings` 相关属性的示例代码如下: ```java WebSettings webSettings = webView.getSettings(); webSettings.setJavaScriptEnabled(true); webSettings.setBuiltInZoomControls(true); webSettings.setDisplayZoomControls(false); webSettings.setSupportZoom(true); webSettings.setDefaultTextEncodingName("utf-8"); webSettings.setLoadsImagesAutomatically(true); webSettings.setUseWideViewPort(true); webSettings.setLoadWithOverviewMode(true); webSettings.setAllowFileAccess(true); webSettings.setAllowContentAccess(true); webSettings.setAllowFileAccessFromFileURLs(true); webSettings.setAllowUniversalAccessFromFileURLs(true); webSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS); webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE); webSettings.setDomStorageEnabled(true); webSettings.setDatabaseEnabled(true); webSettings.setAppCacheEnabled(true); webSettings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW); ``` 在上述代码,主要是设置了 `WebSettings` 与表格显示相关的属性,例如 `setJavaScriptEnabled()`、`setSupportZoom()`、`setLayoutAlgorithm()` 等,可以根据需求进行设置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值