Android listview 的 item 點選無效(無法獲取焦點)的解決方法
阿新 • • 發佈:2019-02-19
當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獲取焦點。
他有三個常量可供設定
- FOCUS_BEFORE_DESCENDANTS ViewGroup本身先對焦點進行處理,如果沒有處理則分發給child View進行處理
- FOCUS_AFTER_DESCENDANTS 先分發給Child View進行處理,如果所有的Child View都沒有處理,則自己再處理
- FOCUS_BLOCK_DESCENDANTS ViewGroup本身進行處理,不管是否處理成功,都不會分發給ChildView進行處理