代码之家  ›  专栏  ›  技术社区  ›  Mitesh Vanaliya

使用setOnTouchListener时,Webview单击事件不起作用

  •  1
  • Mitesh Vanaliya  · 技术社区  · 6 年前

    webview 显示HTML文件。在webview中添加左右滑动。 我正在使用下面的类来刷功能。

    /**
     * Detects left and right swipes across a view.
     */
    public class OnSwipeTouchListener implements OnTouchListener {
    
        private final GestureDetector gestureDetector;
    
        public OnSwipeTouchListener(Context context) {
            gestureDetector = new GestureDetector(context, new GestureListener());
        }
    
        public void onSwipeLeft() {
        }
    
        public void onSwipeRight() {
        }
    
        public boolean onTouch(View v, MotionEvent event) {
            return gestureDetector.onTouchEvent(event);
        }
    
        private final class GestureListener extends SimpleOnGestureListener {
    
            private static final int SWIPE_DISTANCE_THRESHOLD = 100;
            private static final int SWIPE_VELOCITY_THRESHOLD = 100;
    
            @Override
            public boolean onDown(MotionEvent e) {
                return true;
            }
    
            @Override
            public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
                float distanceX = e2.getX() - e1.getX();
                float distanceY = e2.getY() - e1.getY();
                if (Math.abs(distanceX) > Math.abs(distanceY) && Math.abs(distanceX) > SWIPE_DISTANCE_THRESHOLD && Math.abs(velocityX) > SWIPE_VELOCITY_THRESHOLD) {
                    if (distanceX > 0)
                        onSwipeRight();
                    else
                        onSwipeLeft();
                    return true;
                }
                return false;
            }
        }
    }
    

    复制自 this post .

        webview.setOnTouchListener(new OnSwipeTouchListener(this){
            @Override
            public void onSwipeLeft() {
                super.onSwipeLeft();
                onNextClick();
            }
    
            @Override
            public void onSwipeRight() {
                super.onSwipeRight();
                onPrevClick();
            }
    
        });
    

    在向左和向右滑动时工作正常。

    Webview内部单击不起作用。

    谢谢。

    0 回复  |  直到 6 年前