WebView自适应适配

对于网页的自适应设置,通常情况,我们加载后超出屏幕宽度的一般是 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脚本来替换页面内容,达到自适应效果。

""+

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

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

你可能感兴趣的:(WebView自适应适配)