開發中常常需要自己定義Listview,去繼承BaseAdapter,在adapter中按照需求進行編寫,問題就出現了,可能會發生點選每一個item的時候沒有反應,無法擷取的焦點。
如果你的自定義ListViewItem中有Button、ImageButton或者Checkable的子類控件的話,那麼預設focus是交給了子控件,而ListView的Item能被選中的基礎是它能擷取Focus。是以常常當點選item時變化的是子控件,item本身的點選沒有響應。
這時候就可以使用descendantFocusability屬性來解決,他可以設定一個控件如何處理觸摸事件,
該屬性是當一個為view擷取焦點時,定義viewGroup和其子控件兩者之間的關系。
屬性的值有三種:
是以我們可以通過對Item Layout的根控件設定其android:descendantFocusability=”blocksDescendants”來解決,這樣Item Layout就屏蔽了所有子控件擷取Focus的權限,如此就可以順利的響應onItemClickListener中的onItenClick()方法了。
====================================================================================
作者:歐陽鵬 歡迎轉載,與人分享是進步的源泉!
====================================================================================