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屬性了,