" Nephew公司"视图阻止捏手势

时间:2016-12-06 16:10:00

标签: android events gesture motion

我有一系列自定义视图构建如下:

  • 自定义视图A有一些视图B作为孩子
  • 自定义视图B就像一个按钮,需要对点击/点按
  • 作出反应
  • 自定义视图C上有一个捏合手势,是A的兄弟,在视图层次结构中位于A下

Schema of views to explain the case

当仅在自定义视图A上进行捏合时,一切顺利,因为A没有捕捉到任何运动事件,并且其下的视图C接收事件并正确地进行捏合手势(放大/缩小)。

点击自定义视图B时,点击视图即可。

问题是,当尝试捏合并且一个手指在视图B上开始时,它会捕获它的事件,并且它们不会在它下传播,并且在自定义视图C上不会发生任何捏合。

我希望View B做出反应只是点击并将所有其他事件(捏合)传递到自身下方的视图,在本例中为Custom View C。

我如何实现这种情况?

1 个答案:

答案 0 :(得分:0)

找到了解决方案!

我们尝试找到 TapConfirmed 事件(使用 gestureDetector 查找),然后我们将事件直接发送给兄弟通过活动:

@Override
public boolean onInterceptTouchEvent(MotionEvent event) {


    if (conditionToIntercept) {
        return true;
    }
    return false;
}

@Override
public boolean onTouchEvent(MotionEvent event) {

    if(conditionToIntercept{
        if (!gestureDetectorCompat.onTouchEvent(event)) {
            siblingView.dispatchTouchEvent(event);
            return true;
        }
    }

    return false;
}