最近在做一个电商项目,用到webview来显示商品的详情(富文本类型),测试的时候选择了一部系统4.1的手机,当时的做法如下:
WebSettingswb=webView.getSettings();
wb.setJavaScriptEnabled(true);
//设置自适应
wb.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NORMAL.SINGLE_COLUMN);
wb.setDefaultTextEncodingName("UTF-8");
wb.setAppCacheEnabled(true);
wb.setCacheMode(WebSettings.LOAD_DEFAULT);
holder.mWbBrief.loadDataWithBaseURL(null,content,"text/html","utf-8",null);
在Android4.1系统手机上运行是正常的,图片自适应屏幕完美,但是后来在4.4以上的手机测试发现,发现图片不会自适应,经过查找资料发现是由于Android在4.4以后浏览器内核变化引起的。解决办法如下:
mWebview.getSettings().setDefaultTextEncodingName("utf-8");// 避免中文乱码
mWebview.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
WebSettingssettings=mWebview.getSettings();
settings.setJavaScriptEnabled(true);
settings.setNeedInitialFocus(false);
settings.setSupportZoom(true);
settings.setLoadWithOverviewMode(true);//适应屏幕
settings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);
settings.setLoadsImagesAutomatically(true);//自动加载图片
settings.setCacheMode(WebSettings.LOAD_DEFAULT
|WebSettings.LOAD_CACHE_ELSE_NETWORK);
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);
经过测试,完美的解决了图片自适应的问题。
PS:这种处理方法需要引用 jsoup