Android WebView inside ScrollView scrolls only scrollview

前端 未结 7 582
無奈伤痛
無奈伤痛 2020-11-27 02:26

In my app I have a ScrollView that contains some linearviews, some textviews and One Webview, then other linear layouts etc. The problem is that the WebView does not scroll.

7条回答
  •  情书的邮戳
    2020-11-27 03:06

    The solution provided by @panos works but it still has issues when used with ScrollView. The following enhanced version overcomes that problem.

    public class TouchyWebView extends WebView {
    
        public TouchyWebView(Context context) {
            super(context);
        }
    
        public TouchyWebView(Context context, AttributeSet attrs) {
            super(context, attrs);
        }
    
        public TouchyWebView(Context context, AttributeSet attrs, int defStyle) {
            super(context, attrs, defStyle);
        }
    
         @Override
         public boolean onTouchEvent(MotionEvent event) {
             //Check is required to prevent crash
             if (MotionEventCompat.findPointerIndex(event, 0) == -1) {
             return super.onTouchEvent(event);
             }
    
             if (event.getPointerCount() >= 2) {
                 requestDisallowInterceptTouchEvent(true);
             } else {
                 requestDisallowInterceptTouchEvent(false);
             }
    
             return super.onTouchEvent(event);
        }
    
        @Override
        protected void onOverScrolled(int scrollX, int scrollY, boolean clampedX, boolean clampedY) {
            super.onOverScrolled(scrollX, scrollY, clampedX, clampedY);
            requestDisallowInterceptTouchEvent(true);
        }
    
    }
    

    Additionally, you might want to have the following settings for your TouchyWebView.

    mWebView.getSettings().setLoadWithOverviewMode(true);
    mWebView.getSettings().setUseWideViewPort(true);
    mWebView.getSettings().setSupportZoom(true);
    mWebView.getSettings().setBuiltInZoomControls(true);
    

提交回复
热议问题