Android之ListView的item獲取不到焦點
前兩天我在寫一個ListView,其中自定義的item中的控制元件有ImageView、TextView、Button,反正是比較複雜,寫完一整套流程後,真機一執行,詭異的事情出現了,點選item居然無響應。這怎麼回事呢?找了又找,程式碼看了一遍又一遍,沒問題啊也,怎麼回事呢這是?!!
開發中很常見的一個問題,專案中的ListView不僅僅是簡單的文字,常常需要自定義ListView,自己的Adapter去繼承BaseAdapter,在Adapter中按照需求去編寫,但是有時候就想我上面說的,當一個item有多個控制元件的時候可能點選每一個item都沒有反應,無法獲取焦點。但是程式碼都沒問題,原因多半是自己item中的哪些控制元件會將焦點獲取到,所以常常點選item時變化的時子控制元件,item本身沒有響應。
後來我看了看官方文件,在我的item中的父控制元件(根佈局)中加了一條屬性:
android:descendantFocusability="blocksDescendants"
該屬性當一個view獲取焦點時,定義ViewGroup會覆蓋子類控制元件而直接獲取焦點。
來看一下API描述:
android:descendantFocusability
Defines the relationship between the ViewGroup and its descendants when looking for a View to take focus.
Must be one of the following constant values.
屬性的值有三種:
beforeDescendants:viewgroup會優先其子類控制元件而獲取到焦點
afterDescendants:viewgroup只有當其子類控制元件不需要獲取焦點時才獲取焦點
blocksDescendants:viewgroup會覆蓋子類控制元件而直接獲得焦點
PS:參考