1. 程式人生 > >Android listview 的 item 點選無效(無法獲取焦點)的解決方法

Android listview 的 item 點選無效(無法獲取焦點)的解決方法

當listview的item中包含Button之類的空間時就會出現item無法響應事件 ,這是由於item的view中包含的button控制元件獲取了焦點;

網上很多人給出的在item的根佈局屬性中新增  android:descendantFocusability="blocksDescendants"並不一定能解決此問題;

我的問題就沒有解決反而使程式直接崩潰,我執行的安卓版本是7.0的;

其實解決辦法很簡單就是 給你要用的那個listview設定一下即可;

listView_fileList.setDescendantFocusability(FOCUS_BLOCK_DESCENDANTS );
然後再在item的根佈局屬性中新增  
android:descendantFocusability="blocksDescendants" 
就行了。

這個函式是在ViewGroup裡定義的,主要用於控制child View獲取焦點的能力,比如是否阻止child View獲取焦點。

他有三個常量可供設定

  1. FOCUS_BEFORE_DESCENDANTS ViewGroup本身先對焦點進行處理,如果沒有處理則分發給child View進行處理
  2. FOCUS_AFTER_DESCENDANTS 先分發給Child View進行處理,如果所有的Child View都沒有處理,則自己再處理
  3. FOCUS_BLOCK_DESCENDANTS ViewGroup本身進行處理,不管是否處理成功,都不會分發給ChildView進行處理