2016-12-06 69 views
0

我的自定义视图的层次结构建立如下:“侄子”视图会阻止缩放手势

  • 自定义视图A有几个视图B的儿童
  • 自定义视图B就像一个按钮,需要反应以单击/ TAP
  • 自定义视图C具有捏手势它,是A的兄弟,和处于A在视图层次

Schema of views to explain the case

仅当在自定义视图A上捏时,一切都很顺利,因为A不捕捉任何动作事件,并且它下面的视图C会接收事件并正确制作捏合手势(放大/缩小)。

点击自定义视图B时,视图被点击,并且都很好。

的问题,试图掐和一个手指上的查看B开始时,抓住它的事件和那些没有在其传播和没有捏过的自定义视图C.

我想发生让视图B仅响应点击并将所有其他事件(捏)传递到其下面的视图中,在此情况下为自定义视图C.

如何实现该场景?

回答

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