Android - 如何让onTouch事件优先于onClick事件?

3
我有一个活动,允许用户在3个不同的视图之间滑动。每个视图显示一组图像。这些图像具有onClick事件,调用一个新的活动并使图像全屏显示。
这一切都可以正常工作,但是如果我尝试在3个不同的视图之间滑动,并且我的手指滑过图像,它将触发onClick事件并打开图像全屏。因此,我想知道如何优先处理onTouch(用于页面/视图交换)?
(onTouch事件使用gestureListener,我正在使用onFling和flipper方法..) (onClick只是一个imageView.setOnClickListener(new OnClickListener()))
2个回答

3
如果您从onFling(…)返回true,则应该消耗事件并停止传播。

太棒了!成功了!这个问题其实很明显,但我自己却没注意到。非常感谢! - Mr X

0

如果您需要更多信息,可以在这里找到将触摸从父视图委派给子视图的解决方案。

mDrawerLayout.post(() -> {
        Rect delegateArea = new Rect();

        mCalendarView.getHitRect(delegateArea);
        delegateArea.right += 100;
        delegateArea.bottom += 100;

        TouchDelegate touchDelegate = new TouchDelegate(delegateArea, mCalendarView);

        if (View.class.isInstance(mCalendarView.getParent())) {
            ((View) mCalendarView.getParent()).setTouchDelegate(touchDelegate);
        }
    });

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接