【问题标题】:android - giving onTouch priority over onClickandroid - onTouch 优先于 onClick
【发布时间】:2011-07-12 13:17:18
【问题描述】:

我有一个允许用户在 3 个不同视图之间滑动的活动。每个视图都显示一个图像列表。图像具有调用新活动并使图像全屏显示的 onClick 事件。 这一切正常,但是如果我尝试在 3 个不同的视图之间滑动并且我的手指在图像上滑动,它将触发 onClick 事件并全屏打开图像。所以我想知道如何优先考虑 onTouch(用于页面/视图交换)?

(onTouch 事件使用了一个gestureListener,我正在使用onFling 和flipper 方法..) (onClick 只是一个 imageView.setOnClickListener(new OnClickListener() )

【问题讨论】:

    标签: android view onclick touch swipe


    【解决方案1】:

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

    【讨论】:

    • 太棒了!那行得通!这也是一件很明显的事情,我不会注意到的。非常感谢!
    【解决方案2】:

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

    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);
            }
        });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多