【WebView】WebView使用过程中的问题小解

之前简单介绍了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

遇到新的问题,会及时补充~

你可能感兴趣的:(【WebView】WebView使用过程中的问题小解)