webview在4.4版本有重大的变革,在webview中如果使用loadurl()方法,在4.4版本的手机是显示不出来的,它只会执行JavaScript的第一行代码,解决这个问题的方法是换成evaluateJavascript()方法。具体代码如下。
public class MyWebViewClient extends WebViewClient {
@SuppressLint("NewApi") @Override
public void onPageFinished(WebView view, String url) {
// 解决网页图片自适应问题,如果sdk大于19,那么使用evalutejavascript方法
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
view.evaluateJavascript("javascript:var imgs = document.getElementsByTagName('img');for(var i = 0; i<imgs.length; i++){imgs[i].style.width = '100%';imgs[i].style.height = 'auto';}",new ValueCallback<String>() {
@Override
public void onReceiveValue(String value) {
Log.i("MyWebViewClient", "onReceiveValue value=" + value);
}});
} else {
view.loadUrl("javascript:var imgs = document.getElementsByTagName('img');for(var i = 0; i<imgs.length; i++){imgs[i].style.width = '100%';imgs[i].style.height = 'auto';}");
}
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}