Android 2种使用WebView显示富文本

本文介绍两种在Android中处理富文本的方法:一是使用第三方库RichText处理包含图片的HTML内容;二是处理HTML片段,并通过WebView展示转义后的富文本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

     

     第一种:加载完整正常html

     我是在TextView显示网页上的内容的。

     一般显示网址上的内容,都是类似于<fron ......  />的Html内容。

     如果仅仅是显示的文字类型的html信息,那么直接使用Android提供的html转换方法就可以了。

info.setText(Html.fromHtml(“你要转换的数据”));

         如果是文字加图片的形式,这种方式就不行了。也有另外一种称呼:富文本

      比如:

<img src="http://wh.zhuaihu.com/data/upload/shop/store/goods/3/580572904_1280.jpg">(图片为错误图片打不开的)

       这就是后台给我返的信息,总不能傻傻的去截取吧。

       build配置:

compile 'com.zzhoujay.richtext:richtext:2.4.7'

         使用方法:

String info_txt = "";
info.setMovementMethod(LinkMovementMethod.getInstance());
RichText.fromHtml(info_txt).into(info);

         效果图:
       

第二种:加载html代码片段

       类似于后台截取的一部分html代码:

</script><p><span style="color: rgb(51, 51, 51); font-family: "Microsoft Yahei"; font-size: 15px; background-color: rgb(255, 255, 255);">富文本内容</span></p >

  只需要添加html头尾拼接即可:

private String getHtmlData(String bodyHTML) {
        String head = "<head>"
                + "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, user-scalable=no\"> "
                + "<style>img{max-width: 100%; width:100%; height:auto;}*{margin:0px;}</style>"
                + "</head>";
        return "<html>" + head + "<body>" + bodyHTML + "</body></html>";
    }

另有后台数据,数据经过转义,需要进行再次处理:

&lt;p&gt;&lt;span style=&quot;color: rgb(51, 51, 51); font-family: &quot;Microsoft Yahei&quot;; font-size: 15px; background-color: rgb(255, 255, 255);&quot;&gt;本课程详细讲解轻奢风格短发裁剪技术、短发修饰、打薄技巧!&lt;/span&gt;&lt;/p&gt;

需要进行转义替换处理:

if(content.contains("&")){
            content = content.replace("&#039;", "'");
            content = content.replace("&quot;", "\"");
            content = content.replace("&lt;", "<");
            content =content.replace("&gt;", ">");
            content =content.replace("&amp;", "&");
        }

完整代码:

WebSettings settings = webView.getSettings();
        // 设置WebView支持JavaScript
        settings.setJavaScriptEnabled(true);
        //支持自动适配
        settings.setUseWideViewPort(true);
        settings.setLoadWithOverviewMode(true);
        settings.setSupportZoom(true);  //支持放大缩小
        settings.setBuiltInZoomControls(true); //显示缩放按钮
        settings.setBlockNetworkImage(true);// 把图片加载放在最后来加载渲染
        settings.setAllowFileAccess(true); // 允许访问文件
        settings.setSaveFormData(true);
        settings.setGeolocationEnabled(true);
        settings.setDomStorageEnabled(true);
        settings.setJavaScriptCanOpenWindowsAutomatically(true);/// 支持通过JS打开新窗口
        settings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS);
        settings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);
        //设置不让其跳转浏览器
        webView.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                return false;
            }
        });

        // 添加客户端支持
        webView.setWebChromeClient(new WebChromeClient());
        // mWebView.loadUrl(TEXTURL);

        //不加这个图片显示不出来
        if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP) {
            webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
        }
        webView.getSettings().setBlockNetworkImage(false);

 //允许cookie 不然有的网站无法登陆
        CookieManager mCookieManager = CookieManager.getInstance();
        mCookieManager.setAcceptCookie(true);
        mCookieManager.setAcceptThirdPartyCookies(webView, true);

String content = "&lt;p&gt;&lt;span style=&quot;color: rgb(51, 51, 51); font-family: &quot;Microsoft Yahei&quot;; font-size: 15px; background-color: rgb(255, 255, 255);&quot;&gt;富文本内容&lt;/span&gt;&lt;/p&gt;";
        if(content.contains("&")){
            content = content.replace("&#039;", "'");
            content = content.replace("&quot;", "\"");
            content = content.replace("&lt;", "<");
            content =content.replace("&gt;", ">");
            content =content.replace("&amp;", "&");
        }
        webView.loadDataWithBaseURL(null,getHtmlData(content),"text/html","utf-8", null);

         SOAlone邀请您访问安卓巴士 - 安卓开发 - Android开发 - 安卓 - 移动互联网门户
http://www.apkbus.com/?fromuser=SOAlone

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

直到世界尽头szk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值