android點擊事件在不同級別view中的優先級問題
來自: http://www.jcodecraeer.com//a/anzhuokaifa/androidkaifa/2014/0610/1622.html
開發中很常見的一個問題,當項目中的listview不僅僅是簡單的文字,Item中存在諸如ImageButton,Button,CheckBox等子控件(也可以說是Button或者Checkable的子類控件),可能會發生點擊每一個item的時候沒有反應,無法獲取的焦點。 這是因為此時這些子控件會將焦點獲取到,所以常常當點擊item時變化的是子控件,item本身的點擊沒有響應。
這時候就可以使用descendantFocusability屬性來解決,他可以設置一個控件如何處理觸摸事件,該屬性是當一個為view獲取焦點時,定義viewGroup和其子控件兩者之間的關系。
屬性的值有三種:
beforeDescendants:viewgroup會優先其子類控件而獲取到焦點 afterDescendants:viewgroup只有當其子類控件不需要獲取焦點時才獲取焦點 blocksDescendants:viewgroup會覆蓋子類控件而直接獲得焦點
用法示例,下面的LinearLayout會屏蔽其中button的點擊事件:
<LinearLayout android:id="@+id/titlebar_right_tab" android:layout_width="55dip" android:layout_height="fill_parent" android:gravity="center" android:background="@drawable/selector_tab" android:descendantFocusability="blocksDescendants" > <Button android:layout_width="50dip" android:layout_height="50dip" android:text="按鈕" /> </LinearLayout>
當然對于重寫了ontouchevent 或者 onintercepttouchevent 方法的自定義控件來說,這個屬性可能不會起作用。
本文由用戶 DexterDougl 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!