我有一個覆蓋整個屏幕(比如說ParentView
)的視圖,以及僅覆蓋它的一部分的子內部視圖ChildView
。 我想讓ChildView
迴應onSingleTapUp()
,而ParentView
迴應onFling()
。我試圖通過在ChildView
上附加一個SimpleOnGestureListener
和ParentView
上的一個SimpleOnGestureListener
來實現。如何在內部視圖上接受onSingleTapUp(),同時在外部視圖上接受onFling()?
要從ChildView
接受onSingleTapUp()
,其收聽者的onDown()
必須返回true。 但是一旦我這麼做,綁定到ParentView
的聽衆不會再聽到任何動作事件,因爲它是由ChildView
的聽衆取得的。即使ChildView
的onFling()
返回false,這些事件也不會流向ParentView
的偵聽器。
我怎樣才能讓父視圖的偵聽器趕上扔手勢,而子視圖的偵聽器抓住輕按手勢?
我不認爲任何需要的源代碼,以說明情況,但這裏是設置了我ChildView
監聽片段。
ChildView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
return singleTapGestureDetector.onTouchEvent(motionEvent);
}
});
一個解決辦法可能是同時擁有ParentView
和ChildView
的偵聽器來處理onFling()
而只有ChildView
的監聽器處理onSingleTapUp()
,但在這種情況下,一扔就無法跨越ChildView
發生(如我相信,在孩子的外面開始,然後在孩子的內部結束)。
這對我來說工作得很好,我嘗試了其他方法,但沒有工作,就像使用FrameLayout - 同樣的問題。接受這個答案 - 希望這將有助於其他人在未來,或其他人會注意到更好的方式來做到這一點。 – kennethc
需要幫助來實現這個http://stackoverflow.com/a/21036823/2380114 –