三星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'; " +
" } " +
"}");
}