WebView加载富文本

作者: 考试小灵通 | 来源:发表于2020-11-26 08:00 被阅读0次
    目录
    image
    前言

    WebView加载富文本的方法总结了一下

    WebView加载数据的方式

    WebView加载数据的方式有两种:

    webView.loadUrl(data);//加载url
    webView.loadDataWithBaseURL(null,data, "text/html" , "utf-8", null);//加载html数据
    

    因为我们需要加载富文本,所以我们选择第二种加载方式。

    WebView的配置

    这里我们可以将缩放功能屏蔽掉

     <!--隐藏滑动条-->
    <WebView
                    android:scrollbars="none"
                    android:overScrollMode="never"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content">
                </WebView>
    
    WebSettings webSettings = mWebView.getSettings();
    webSettings.setJavaScriptEnabled(true);//允许使用js
    //不支持屏幕缩放
    webSettings.setSupportZoom(false);
    webSettings.setBuiltInZoomControls(false);
    //不显示webview缩放按钮
    webSettings.setDisplayZoomControls(false);
    
    加载富文本

    这里我引用了一段富文本:

    private String mRichText="<p style=\"text-align: left;\"><img src=\"https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=1383902695,1129447956&fm=26&gp=0.jpg\"\n" +
                "\t title=\"1541054054758015328.jpg\" alt=\"1.jpg\" /><img src=\"https://ss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=2353449440,2528668120&fm=26&gp=0.jpg\"\n" +
                "\t title=\"1541054057414099008.jpg\" alt=\"2.jpg\" /><img src=\"https://ss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=3446458559,1680525880&fm=26&gp=0.jpg\"\n" +
                "\t title=\"1541054060899024343.jpg\" alt=\"3.jpg\" /></p>";
    

    然后通过WebView的第二种加载方式进行加载:

    mWebView.loadDataWithBaseURL(null,mRichText, "text/html" , "utf-8", null);
    

    这里的图片是网络图片所以需要加入联网权限:

    <uses-permission android:name="android.permission.INTERNET"/>
    

    运行效果如下:


    image

    很显然富文本没有做到与屏幕适配,那么接下来我们来处理下富文本的样式做到适配屏幕。

    修改富文本样式适配屏幕

    这里我用的是Hbuilder方便预览,当然也可以直接在记事本了进行修改,改完之后修改后缀名为html然后通过浏览器预览。

    <html>
        <head>
            <meta name="viewport" content="width=device-width, initial-scale=1">
            <style>img{max-width: 100%; width:100%; height:auto;}*{margin:0px;}</style>
        </head>
        <body>
            <p style="text-align: left;"><img src="https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=1383902695,1129447956&fm=26&gp=0.jpg"
                 title="1541054054758015328.jpg" alt="1.jpg" /><img src="https://ss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=2353449440,2528668120&fm=26&gp=0.jpg"
                 title="1541054057414099008.jpg" alt="2.jpg" /><img src="https://ss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=3446458559,1680525880&fm=26&gp=0.jpg"
                 title="1541054060899024343.jpg" alt="3.jpg" /></p>
        </body>
    </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>";
        }
    

    适配完后的效果:

    image
    项目源码:https://github.com/myml666/RichTextDemo

    相关文章

      网友评论

        本文标题:WebView加载富文本

        本文链接:https://www.haomeiwen.com/subject/iyoniktx.html