Android disable WebView touch but keep zooming/scrolling

后端 未结 4 818
误落风尘
误落风尘 2021-01-23 16:59

I am looking for a method to disable touch on a WebView so user\'s are not able to click on html links but keep the zooming and scrolling functions of the WebView.

4条回答
  •  日久生厌
    2021-01-23 17:38

    Here is my solution. It does not let a user trigger javascript click events

    public class NonClickableWebView extends WebView {
        private GestureDetectorCompat gestureDetector;
        private boolean isSingleTap = false;
    
        public NonClickableWebView(Context context) {
            super(context);
            gestureDetector = new GestureDetectorCompat(context, new GestureDetector());
        }
    
        public NonClickableWebView(Context context, AttributeSet attrs, int defStyleAttr) {
            super(context, attrs, defStyleAttr);
            gestureDetector = new GestureDetectorCompat(context, new GestureDetector());
        }
    
        public NonClickableWebView(Context context, AttributeSet attrs) {
            super(context, attrs);
            gestureDetector = new GestureDetectorCompat(context, new GestureDetector());
        }
    
        @Override
        public boolean onTouchEvent(MotionEvent event) {
            if (event.getAction() == MotionEvent.ACTION_DOWN) {
                isSingleTap = false;
            }
            gestureDetector.onTouchEvent(event);
    
            if (isSingleTap && event.getAction() == MotionEvent.ACTION_UP) {
                return true;
            }
    
            return super.onTouchEvent(event);
        }
    
        private class GestureDetector extends android.view.GestureDetector.SimpleOnGestureListener {
            @Override
            public boolean onSingleTapUp(MotionEvent e) {
                isSingleTap = true;
                return false;
            }
    
            @Override
            public boolean onSingleTapConfirmed(MotionEvent e) {
                isSingleTap = true;
                return false;
            }
        }
    }
    

提交回复
热议问题