解決ScrollView嵌套WebView后導(dǎo)致網(wǎng)頁加載無法顯示問題

原因:ScrollView和WebView都有焦點(diǎn)和滑動(dòng)事件,高度無法自適應(yīng),所以監(jiān)聽WebView加載后重新設(shè)置高度就可以了。
解決方案一為WebView重新設(shè)置高度:

WebSettings webSettings = webView.getSettings();  
        webSettings.setJavaScriptEnabled(true);//設(shè)置能夠解析Javascript  
        webSettings.setDomStorageEnabled(true);//設(shè)置適應(yīng)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);  
               //重新為WebView設(shè)置高度
                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的滑動(dòng)沖突(該方法是讓ScrollView和WebView都單獨(dú)滑動(dòng)效果不理想)

webView.setOnTouchListener(new View.OnTouchListener() {  
           @Override  
           public boolean onTouch(View v, MotionEvent ev) {  
               ((WebView)v).requestDisallowInterceptTouchEvent(true);  
               return false;  
           }  
       });  

解決方案二:不讓W(xué)ebView滑動(dòng),只滑動(dòng)ScrollView

  <ScrollView
            android:id="@+id/scrollView"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_marginBottom="@dimen/dp_20"
            android:fillViewport="true"
            android:scrollbars="none"
            android:descendantFocusability="blocksDescendants"/>

為ScrollView設(shè)置android:descendantFocusability="blocksDescendants"屬性

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容