之前简单介绍了WebView的使用,那么在使用webview的过程中也遇到了一些问题,这篇就是对这些问题的不断总结吧
问题一 :5.0以下WebView加载的页面中图片可以显示,5.0以上无法显示。
- 解决的方法为:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
//两者都可以
webSetting.setMixedContentMode(webSetting.getMixedContentMode());
//mWebView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
}
Android 5.0上Webview默认不允许加载Http与Https混合内容,可能是由于文章的链接和图片的链接不一致:
MIXED_CONTENT_ALWAYS_ALLOW 允许从任何来源加载内容,即使起源是不安全的;
MIXED_CONTENT_NEVER_ALLOW 不允许Https加载Http的内容,即不允许从安全的起源去加载一个不安全的资源;
MIXED_CONTENT_COMPLTIBILITY_MODE 当涉及到混合式内容时,WebView会尝试去兼容最新Web浏览器的风格;
在查询的过程中,也发现了有开发者采用的其他的解决办法,如果图片无法显示不是以上现象,可以参考一下链接给出的文章的内容:
http://www.jianshu.com/p/cd1b943f2608
问题二:当WebView嵌套在ScrollView中时,有出现底部一大段空白的情况。
- 解决的办法为:
webview.setWebViewClient(new WebViewClient(){
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
//这个是一定要加上那个的,配合scrollView和WebView的height=wrap_content属性使用
int w = View.MeasureSpec.makeMeasureSpec(0,
View.MeasureSpec.UNSPECIFIED);
int h = View.MeasureSpec.makeMeasureSpec(0,
View.MeasureSpec.UNSPECIFIED);
//重新测量
webview.measure(w, h);
}
});
测量方法中的这两个数值不是普通的数值, 它表示: size + mode 。
模式分为:
View.MeasureSpec.EXACTLY:表示父视图希望子类的大小是specSize中制定的大小.
View.MeasureSpec.AT_MOST:父试图希望子类的大小最高不超过specSize中制定的大小.
View.MeasureSpec.UNSPECIFIED:父试图不对子类实施任何限制,子试图可以得到自己想得到的任意大小.
在网上看到其他的解决方法,也可以参考下是否真得可以解决问题,链接如下:
http://blog.csdn.net/mffandxx/article/details/50920185
遇到新的问题,会及时补充~