2011-10-22 45 views
4

我有一個按鈕,可以通過onClick處理程序處理。同時處理onClick和onTouchEvent事件

但是,我也需要響應onTouchEvent事件,以便我可以處理按鈕高亮。

問題是,如果我從我的onTouchEvent處理程序返回「false」,它將在onClick處理程序中調用,但永遠不會爲隨後的「up」事件給我一個onTouchEvent。

如果我從onTouchEvent返回「true」,那麼我得到「up」事件,但它永遠不會將觸摸發送到onClick。

那麼我有什麼選擇?

  1. 實現自己的「點擊」處理中的onTouchEvent - 這意味着我將需要跟蹤和按鈕區域移動等似乎有點複雜。

  2. 我可以讓我的按鈕使用選擇器而不是單個圖像,併爲不同的狀態分配不同的圖像。我遇到的問題是,選擇器很麻煩,以至於更改圖像,我需要這樣做。 (當我的應用程序是在不同的「模式」,爲不同狀態下的按鈕圖像而改變。同樣,這似乎過於複雜。

是不是有一個簡單的方法來完成這一切???

+0

讓我看看我是否理解正確。你想用你自己的方式覆蓋Button的默認突出顯示?如果是這樣,你可以在onTouch中做所有突出顯示的東西,並在收到ACTION_UP時調用button.performClick()。如果設置了onclicklistener,performClick會調用按鈕的onClick方法。 –

回答

1

這似乎是你最好的選擇將上面的選項2,莖。

我建議創建多個ButtonStateListDrawable選擇,然後以編程方式使用Button.setBackgroundResource()風格之間進行切換。

+0

這是一個好主意。然而我實際上做的是每當我想改變圖像時重寫整個StateListSelector。不過,我想讓問題保持開放,以便如何同時處理onClick和onTouchEvents。 – Brad

相關問題