WebView图片显示不全:
有时我们使用WebView加载html页面的时候会出现图片大于屏幕,需要左右滑动才能看到全部,这无疑是一个非常不好的用户体验,怎么能让图片刚好适配屏幕的宽度,用一下方法试了之后可行:
//支持JavaScript
WebSettings webSettings = tvBrief.getSettings();
webSettings.setJavaScriptEnabled(true);
//设置页面布局类型
webSettings.setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN);
//设置WebViewClient监听
tvBrief.setWebViewClient(new MyWebViewClient());
private class MyWebViewClient extends WebViewClient {
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
// html加载完成之后,调用js的方法
imgReset();
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}
private void imgReset() {
tvBrief.loadUrl("javascript:(function(){"
+ "var objs = document.getElementsByTagName('img'); "
+ "for(var i=0;i<objs.length;i++) " + "{"
+ "var img = objs[i]; "
+ " img.style.width = '100%'; "
+ " img.style.height = 'auto'; "
+ "}" + "})()");
}
/**
* 使用正则表达式 把html标签中的style属性全部替换成""
*/
private String replaceImgStyle(String html){
String reg = "style=\"([^\"]+)\"";
Pattern pattern = Pattern.compile(reg);
Matcher matcher = pattern.matcher(html);
return matcher.replaceAll("");
}
加载页面
String html=replaceImgStyle(htmlJson)
tvBrief.loadDataWithBaseURL(null,html, "text/html", "utf-8", null);
文化馆下面就是一个WebView可以看到图片刚好完整的出现