android ListView上有checkBox、button時導致onListItemClick方法失效的解決辦法

 android開發中如果在ListView上有checkBox、button存在時會導致ListView的onListItemClick監聽方法失效

網上查了下:

解釋:

    ListView的item中加入CheckBox 、button後 導致ListView對OnItemClick事件無法響應 原因是因爲CheckBox、button的事件響應優先級高於List Item,所以屏蔽了ListItem的單擊事件。

    自定義ListViewItem中有Button或者Checkable的子類控件的話,那麼默認focus是交給了子控件,而ListView的Item能被選中的基礎是它能獲取Focus,也就是說我們可以通過將ListView中Item中包含的所有控件的focusable屬性設置爲false,這樣的話ListView的Item自動獲得了Focus的權限

有人說設置:設置CheckBox的android:focusable="false"即可 ,但是我試了還是不行,也有一些很麻煩的方法比如分區域分別響應等


這裏介紹一種簡單的解決方法:

簡單的解決方法就是在ListView的Item選項的佈局文件根上加上android:descendantFocusability=”blocksDescendants”

這樣ItemLayout就屏蔽了所有子控件獲取Focus的權限,不需要針對ItemLayout中的每一個控件重新設置focusable屬性了,



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章