"Nephew" 观看次数阻止捏合手势

"Nephew" views block pinch gesture

我有一个自定义视图的层次结构,如下所示:

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

点击自定义视图 B 时,点击视图,一切正常。

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

我想让视图 B 仅对点击做出反应,并将所有其他事件(捏合)传递给其下方的视图,在本例中为自定义视图 C。

我怎样才能实现这种情况?

找到解决方案!

我们试图找到一个 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;
}