2012-12-12 67 views
0

下面是我試圖實現的一個總結。 我有一個視圖,在這個視圖我聽MotionEvent。 當它匹配一個特定的條件時,我想將該MotionEvent傳遞給一個GridView,以便滾動。 我在做類似的東西將MotionEvent傳遞給GridView

if (event.getAction() == MotionEvent.ACTION_MOVE) { 
    if (condition match) { 
     getGridView().dispatchTouchEvent(event); 
    } 
} 

不過,這並不讓我的網格根據MotionEvent滾動。也許它不會聽這種事件,但因爲沒有「ScrollEvent」我不知道。

任何人都可以請我關於這一點。我沒有找到文檔幫助。 謝謝。

回答

0

爲了處理動作事件,視圖需要獲取與該動作相關的全套事件。

例如,滾動應該從MotionEvent.ACTION_DOWN開始,接着是幾個MotionEvent.ACTION_MOVE,並且以MotionEvent.ACTION_UP完成。您不能僅派發其中一個事件,需要派發整套視圖以便能夠解碼滾動移動。

問候。

0

路易斯已經解釋了爲什麼你的網格視圖不滾動的原因。實際上這種派遣是不正確的。 你說過要將視圖A的MotionEvent傳遞給視圖B.但是,運動中的x和y是相對於視圖的,並且不能直接在另一個視圖中使用。嘗試查看ViewGroup.dispatchTouchEvent()的源代碼,ViewGroup將在將其分派給子級之前對其進行轉換。 如果視圖B是視圖A的子視圖,則應使用onInterceptTouchEvent()截取運動,而不是更改分派機制。

+0

謝謝你們的答案。對於那個問題的人,我做了搜索。爲了我的信息並在下次增加我的問題技能,你可以解釋你爲什麼選擇。問題很明顯,我只是採取了錯誤的方法,由於它不正確,我無法找到實現我想要的提示。 – Mostrapotski

相關問題