2016-12-06 68 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; 
}