您的位置:首页 > 移动开发

WebView 图片大小自适应问题

2017-03-13 14:48 323 查看
三星android 4.4 以下版本遇到 图片过大展示超过手机屏幕的问题:

问题出在img标签中有固定的width大小,导致展示过大。

解决方法1) :缺点是会把style 的其他属性也替换掉

private String exchangeStyleValue(String htmlString) {
Document doc = Jsoup.parse(htmlString);
Elements elements = doc.getElementsByTag("a");
for (Element element : elements) {
Elements imgs = element.getElementsByTag("img");
if (imgs != null && imgs.size() > 0) {
Attributes attrs = element.attributes();
for (Attribute attr : attrs) {
if (attr.getKey().equals("style")) {
attr.setValue("max-width:100% width:auto");
} else {
continue;
}
}
for (Element img : imgs) {
Attributes attrs2 = img.attributes();
for (Attribute attr : attrs2) {
if (attr.getKey().equals("style")) {
attr.setValue("max-width:100% width:auto");
} else {
continue;
}
}
}
}
}
return doc.toString();
}


解法2):

signWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
return true;
}

@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
imgStyleChange();
}
});

private void imgStyleChange(){
signWebView.loadUrl("Javascript:" +
"   var objs = document.getElementsByTagName('a'); " +
"   for(var i=0;i<objs.length;i++)  { " +
"       var a = objs[i]; " +
"       a.style.maxWidth = '100%'; " +
"       a.style.width = 'auto'; " +
"         var imgs = objs[i].getElementsByTagName('img'); " +
"         for(var i=0;i<imgs.length;i++) { " +
"           var img = imgs[i];" +
"           img.style.maxWidth = '100%'; " +
"           img.style.width = 'auto'; " +
"       } " +
"}");
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: