美文网首页
WebView自适应适配

WebView自适应适配

作者: ramblejoy | 来源:发表于2017-04-21 11:22 被阅读526次

对于网页的自适应设置,通常情况,我们加载后超出屏幕宽度的一般是 img 或者 video 标签或者文字,这类标签可以使用css 或者网上盛行的三个设置做到适配:

setting.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);
setting.setUseWideViewPort(true);
setting.setLoadWithOverviewMode(true);

但是这个方法不一定有效,android 4.4 后因为内核发生变动,这个时候一般情况下,需要设置图片等标签设置高度为auto可以解决问题。

img style='max-width:90%;height:auto;

如无法修改代码html代码,可在本地替换的方式,可以引用 jsoup

Documentdoc_Dis = Jsoup.parse(content);
Elementsele_Img = doc_Dis.getElementsByTag("img");
if (ele_Img.size() != 0) {
    for (Elemente_Img:ele_Img) {
        e_Img.attr("width", "100%");
        //一定要设置 auto 不要控制其高度,让其自己跟随宽度变化情况调整
        e_Img.attr("height", "auto");
    }
}
StringnewHtmlContent = doc_Dis.toString();
mWebview.loadDataWithBaseURL(null, newHtmlContent, "text/html", "utf-8", null);

但如果出现了 table 这种标签,即 table 适配屏幕,很可能css都失效,也无法适配,坑了我好久。。。。这时,这需要table高度为auto

可使用js脚本来替换页面内容,达到自适应效果。

"<script type=\"text/javascript\">"
     "var tables = document.getElementsByTagName('table');" + // 找到table标签
       "for(var i = 0; i<tables.length; i++){" +  // 逐个改变
              "tables[i].style.width = '100%';" +  // 宽度改为100%
               "tables[i].style.height = 'auto';" +
         "}" +
  "</script>"+

说明一下: 上面使用 js 脚步适配,请写到 内容加载之后,即是 <body> 内容 <写后面></body>,为什么呢?有基础的人都知道,html 是解析性语言,从上到下,你要先加载好 html 再使用 js 改变,除非js 包在函数里面。

参考:
http://www.cnblogs.com/linguanh/p/4927353.html
http://www.jianshu.com/p/b1f3222c859b

相关文章

网友评论

      本文标题:WebView自适应适配

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