2011-12-22 47 views
2

我正在構建一個自定義的Android控件,以擴展Gallery。我需要被覆蓋,所以我發出Android畫廊觸摸事件的控制順序不與getChildDrawingOrder同步

setSpacing(-60); 

的觀點的影響有一次,我給這個,我的畫廊,1,3繪製,然後再2這是中間的一個有三個圖標。同樣的規則在getChildDrawingOrder定義,也由

setChildrenDrawingOrderEnabled(true); 

啓用它現在的問題是意見中我已經定義訂貨規則的方式得到繪製。但是畫廊控件中的事件將轉到原始視圖順序,即1,2,3。爲了更好地解釋,

繪製1,繪製3並最終繪製2,並且它們彼此重疊。 因此,該視圖具有1的50%,2的100%和第3視圖的50%。

但是當我觸摸視圖時,android會假定1的50%,2的50%和3的100%在屏幕上可見。爲了更清楚一點,在1次視圖的50%之後,如果我點擊,2次聚焦(這是它應該的方式,因爲按照我的繪圖規則,2在1之上)。

但是,當我點擊視圖2的50%後的任意位置時,焦點將轉到3,而按照圖3的順序在此處不可見,則2的100%可見,但對於視圖的50% 1,重點是視圖2.

你可以幫助分享你的想法,我們如何通過強制事件的順序來遵循屏幕上的視圖模式來解決它?

回答

0

您必須手動重新計算這些子視圖的觸摸區域。

您將很可能要覆蓋getHitRect()並返回您自己的Rect對象,該對象的邊界根據重疊區域進行了調整。