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