安卓开发——问题:ListView点击事件失效(descendantFocusability)
来源:互联网 发布:表情训练的软件 编辑:程序博客网 时间:2024/04/28 03:26
一、问题
在安卓开发学习过程中,时常会遇到ListView的点击事件失灵的问题,就是为ListView设置了OnItemCLickListener,但没有触发点击事件。
二、原因
1、第一种情况
在项目中的ListVIew不仅仅是简单的文字,而是自己定义的一个子布局文件,自己的Adapter去继承BaseAdapter,在Adapter中按照需求进行编写,这个子布局文件内部常常包含了ImageButton、Button、CheckBox等子控件,此时这些子控件会将焦点获取到,所以常常当点击item时变化的是子控件,item本身的点击没有响应。
这种问题的解决方法如下:
使用descendantFocusability来解决,该属性API描述如下:
Defines the relationship between the ViewGroup and its descendants when looking for a View to take focus.
Must be one of the following constant values.
该属性的值有三种:
beforeDescendants:viewgroup会优先其子类控件而获取到焦点
afterDescendants:viewgroup只有当其子类控件不需要获取焦点时才获取焦点
blocksDescendants:viewgroup会覆盖子类控件而直接获得焦点
通常我们用到的是第三种,即在Item布局的根布局加上
android:descendantFocusability=”blocksDescendants”
的属性就好了。
2、第二种情况
这种情况同样也是发生在,自己的ListView的item填装的是自定义的一个子布局文件,自己的Adapter去继承BaseAdapter,在Adapter中按照需求进行编写,通常这时,这个子布局文件常常是一个LinearLayout或者RelativeLayout,而为了使这个布局文件能够有点击时颜色反馈(即使用了自定义selector资源文件),我们通常会给这个子布局文件的根布局(LinearLayout或者RelativeLayout)添加android:clickable="true"
属性,而正是这一项导致所有Item都要抢占焦点,所以ListVIew的点击事件失效,解决方法就是去除这一属性(同时在ListView中的Item点击颜色反馈也不会失效)。- 安卓开发——问题:ListView点击事件失效(descendantFocusability)
- 安卓开发——问题:ListView的item长按事件触发后接着触发点击事件
- ListVIew点击事件失效
- ListView点击事件失效
- ListVIew点击事件失效
- ListVIew点击事件失效
- ListVIew点击事件失效
- listview点击事件失效
- ListVIew点击事件失效
- ListVIew点击事件失效
- 安卓——蓝牙listView搜索以及点击事件
- ListView item点击无效(焦点问题)解决--descendantFocusability
- ListView点击事件监听失效
- ListView Item点击事件失效
- ListView item点击事件失效
- android ListView 点击事件失效
- listview点击监听事件失效
- Android开发笔记之listView的item事件点击失效
- C#颜色和名称样式对照表
- android 6.0运行时新权限的申请(转载)
- NKOJ 2151【单调队列】烽火传递 单调队列优化DP
- android gradle aar依赖, 修改默认apk名称
- GLSL实现滤镜效果
- 安卓开发——问题:ListView点击事件失效(descendantFocusability)
- 关于“时间”的一次探索 关于js时区iso,utc等完美解答
- 五步搞定Android开发环境部署——非常详细的Android开发环境搭建教程
- Xcode 静态库调试策略
- 一些简单的选择题
- HDU-1062-Text Reverse
- ios开发——定时任务
- Android:android.database.sqlite.SQLiteConstraintException:UNIQUE constraint failed
- Android NDK——Log