1. 程式人生 > >Android之ListView的item獲取不到焦點

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:參考

https://blog.csdn.net/u010838555/article/details/42243075