天天看點

android中ListView焦點強占解決

1.在listview中經常會出現焦點搶占的情況,如果在list item 上添加 checkbox、button、imagebutton、radiobutton…等事件性控件

,則他們将優先有響應權利

2.有兩種處理方式:

1.分别處理,讓其響應處理邏輯相同即可

2.通過布局相容兩者事件

1.将ListView中的Item布局中的子控件focusable屬性設定為false           比如在Button控件等屬性中設定android:focusable =false;

2.在getView方法中設定button.setFocusable(false)

3.設定item的根布局的屬性android:descendantFocusability="blocksDescendant"     

其實這三種方法都是為了讓Button等控件不能擷取焦點,進而使得item可以響應點選事件。

第三種方法使用起來相對友善,因為它是将item布局中的其他所有控件都設定為不能擷取焦點。

android:descendantFocusability屬性共有三個取值,分别為

beforeDescendants:viewgroup會優先其子類控件而擷取到焦點

afterDescendants:viewgroup 隻有當其子類控件不需要擷取焦點時才擷取焦點

blocksDescendants:viewgroup 會覆寫子類控件而直接獲得焦點

焦點強占在ListView中挺容易出現,因為當你想在listview布局中的條目添加Button點選按鈕之類的子控件,想觸發點選事件,就會子空間和listview的有焦點的沖突,導緻listview不能點選,是以需要讓子控件失去焦點,才能讓listview的條目可以點選觸發事件。

希望能幫到各位android的小夥伴們!!!

不懂其他問題的小夥伴可以留言哦,和我一起探讨android的知識一起學習,哈哈!!!

盡量每天更新一個小知識點和上傳資源,小夥伴們可以一起共享資源哦,關注一下謝謝拉!!