GridView 或 ListView的setOnItemClickListener事件没有响应解决方法

原因

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会覆盖子类控件而直接获得焦点

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,420评论 25 708
  • 书画展
    画展示阅读 129评论 0 1
  • 坐着站着, 只要一本书就能到另一个世界; 笑着哭着 , 哪一页有你的笑容或泪水; 你都记得; 酸着想着, 即便是远...
    夜掩朦胧阅读 521评论 0 0