Android中scrollview嵌套webview后导致网页加载成功但无法显示

                   今天同事提出了一个bug,关于h5页面无法显示为空白页,因为这块的代码不是我写的,之前同事写的,所以我就看了一下代码,初看没什么问题,因为感觉这没什么难度,就是一个webview.loaduri(uri).后来检查布局也没问题,无奈之下换了一个百度的链接,是可以,然后就分析查资料,原来是scrollview和webview都有焦点和滑动事件,高度无法自适应,所以我就在监听webview加载完后重新设置高度就可以了。我直接上关键代码了,给自己做个笔记,希望也能帮助遇到同样问题的同学。

这是布局

 

        
            
        
        
    
下面是代码:
WebSettings webSettings = webView.getSettings();
        webSettings.setJavaScriptEnabled(true);//设置能够解析Javascript
        webSettings.setDomStorageEnabled(true);//设置适应Html5的一些方法
        webView.setWebChromeClient(new WebChromeClient());
        webView.setWebViewClient(new WebViewClient(){
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
//                return super.shouldOverrideUrlLoading(view, url);
                webView.loadUrl(url);
                return true;
            }

            @Override
            public void onPageFinished(WebView view, String url) {
//                super.onPageFinished(view, url);
                progress.setVisibility(View.GONE);
                LinearLayout.LayoutParams  params = (LinearLayout.LayoutParams) webView.getLayoutParams();
                params.width = getScreenWidth();
                params.height = getScreenHeight()-SizeUtil.dip2px(ScreenShotByH5Activity.this,150);
                webView.setLayoutParams(params);
            }

            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon) {
                super.onPageStarted(view, url, favicon);
                progress.setVisibility(View.VISIBLE);
            }

            @Override
            public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
                super.onReceivedError(view, request, error);
                progress.setVisibility(View.GONE);
                showToastMessage("加載失敗");
            }
        });
        webView.getSettings().setJavaScriptEnabled(true);
        webView.loadUrl(url);

下面是解决scrollview和webview的滑动冲突代码

 webView.setOnTouchListener(new View.OnTouchListener() {

            @Override
            public boolean onTouch(View v, MotionEvent ev) {

                ((WebView)v).requestDisallowInterceptTouchEvent(true);


                return false;
            }
        });


你可能感兴趣的:(Android中scrollview嵌套webview后导致网页加载成功但无法显示)