2011-02-28 134 views
3

我需要嵌套幾個觸摸監聽器。例如,我有一個ViewGroup,它將包含以下監聽器:onItemClick,onLongItemClick和onTouch.EV ==移動。Android觸摸監聽器?

視圖組內的項目也會有一個onClick。

在我的測試中,兩組偵聽器獨立工作,但不是相互依賴。有什麼方法可以將聽衆羣體聯繫起來嗎?

感謝, 〜Aedon

回答

3

我不確定,但也許你可以派遣根視圖到其子視圖觸摸事件(從活動)

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    if (ChildView.dispatchTouchEvent(event)) 
     return true; 
    else 
     return false; 
} 

用戶點擊該按鈕後,調度觸摸事件回到根視圖。

+0

啊,太棒了,我會在這裏嘗試一下,非常感謝你! – AedonEtLIRA 2011-03-01 14:41:14

2

所有事件從根傳播到孩子的意見。如果一個視圖不想處理一個事件,它將它傳遞給它的子視圖。如果一個視圖消耗了一個點擊ViewGroup的事件,你可以讓它滴下或阻止它。通常,從事件回調中返回false表示事件未處理,返回true表示事件已處理,不會被賦予任何其他視圖。

假設您在ViewGroup中有一個按鈕。如果按下按鈕,ViewGroup將首先接收事件,它可以選擇不將事件傳遞給其子項,在這種情況下,按鈕不會響應點擊。

+0

對;這就是我在開發人員文章中讀到的內容。但那並不是我所需要的。如果可能的話,它需要向後工作。我需要知道用戶在允許父ViewGroup執行它的偵聽器之前單擊該按鈕。 – AedonEtLIRA 2011-02-28 21:17:18

+0

你簡直不能。根視圖總是首先獲取事件。請相信我,不要在這上面花時間。 – Veeresh 2011-02-28 22:06:23

+0

我看到並接受根視圖將始終接收第一個偵聽器。但我認爲這是一個我不瞭解也無法實現的工作。如果您在啓動屏幕上思考一個小部件,它有幾個基本的觸摸選項:onClick和onLongClick。但是,如果您要查看特定窗口小部件(例如,reddit窗口小部件或媒體窗口小部件),那麼它們也包含窗口小部件中的按鈕。按下按鈕優先處理小部件,但仍然可以在屏幕上點擊和/或拖動。這是我希望實現的。 – AedonEtLIRA 2011-02-28 23:12:36