原因
listview、GridView的子元素中包含了Button或者ImageButton之类的元素,button的优先级高于listview 、GridView所以不能监听item的点击事件,被ImageButton或Button 拦截了点击事件。
解决办法
1.在listview或gridview的item布局中的根节点中加入一个属性:android:descendantFocusability="blocksDescendants"
2.在item布局中的ImageButton或Button中加入以下两个属性:
android:clickable="false"
android:focusable="false"
这样再次点击gridview或listview的列表项时,这个单击事件就不会被imageButton或button拦截了
关于android:descendantFocusability这个属性的取值介绍:
beforeDescendants:viewgroup会优先其子类控件而获取到焦点
afterDescendants:viewgroup只有当其子类控件不需要获取焦点时才获取焦点
blocksDescendants:viewgroup会覆盖子类控件而直接获得焦点
网友评论