PullToRefreshListView点击无效果
2015-11-18 09:59
453 查看
最近遇到一个很奇怪的问题,用PullToRefreshListView做列表,点击里面的子项没任何响应,还以为是PullToRefreshListView本身存在BUG,后来发现,即使用ListView也存在同样的问题!
最后终于找到了问题所在,原因是,在子项(item),原因是由于在你自己定义的Item中存在诸如ImageButton,Button,CheckBox等子控件(也可以说是Button或者Checkable的子类控件),此时这些子控件会将焦点获取到,所以常常当点击item时变化的是子控件,item本身的点击没有响应。
知道原因了,那么问题就很好解决了,
方案一:
在整个大布局里面增加属性:android:descendantFocusability="blocksDescendants"
该属性是当一个为view获取焦点时,定义viewGroup和其子控件两者之间的关系。
属性的值有三种:
beforeDescendants:viewgroup会优先其子类控件而获取到焦点
afterDescendants:viewgroup只有当其子类控件不需要获取焦点时才获取焦点
blocksDescendants:viewgroup会覆盖子类控件而直接获得焦点
方案二:
在ImageButton、Button、CheckBox等会获取焦点的控件上增加:android:focusable="false"
意思很简单,不获取焦点
最后终于找到了问题所在,原因是,在子项(item),原因是由于在你自己定义的Item中存在诸如ImageButton,Button,CheckBox等子控件(也可以说是Button或者Checkable的子类控件),此时这些子控件会将焦点获取到,所以常常当点击item时变化的是子控件,item本身的点击没有响应。
知道原因了,那么问题就很好解决了,
方案一:
在整个大布局里面增加属性:android:descendantFocusability="blocksDescendants"
该属性是当一个为view获取焦点时,定义viewGroup和其子控件两者之间的关系。
属性的值有三种:
beforeDescendants:viewgroup会优先其子类控件而获取到焦点
afterDescendants:viewgroup只有当其子类控件不需要获取焦点时才获取焦点
blocksDescendants:viewgroup会覆盖子类控件而直接获得焦点
方案二:
在ImageButton、Button、CheckBox等会获取焦点的控件上增加:android:focusable="false"
意思很简单,不获取焦点
相关文章推荐
- ListView OnItemClickListener点击事件
- PullToRefreshListView 应用讲解
- android中为listview同时设置长按项onItemLongClick和点击事件onItemClick出现的问题
- Android PullToRefresh (ListView GridView 下拉刷新) 使用详解
- android listvieew PullToRefreshListView设置setOnTouchListener()失效
- android listview onTouch和onItemClick并存
- PullToRefreshListView的onRefreshComplete()不起效果解决方案
- “PullToRefreshListView 在Android 4.1 (Jelly Bean)中点击没反应”的解决方法
- PullToRefreshListView不显示
- PullToRefreshListView调用onRefreshComplete方法 无法取消刷新的bug
- PullToRefreshListView 进入不能进入刷新状态解决
- Android之SimpleAdapter和ListView
- PullToRefreshListView详解
- chrisbanes/Android-PullToRefresh ListView的下拉刷新
- android_108_PullToRefresh
- 解决listview中的textview设置了setMovementMethod导致onItemclick无效的问题
- listView/gridView 的 onItemClick 无效的解决办法
- ListView的点击事件、长按事件监听
- TreeListVew+PullToRefreshListView结合使用
- PullToRefreshListView调用onRefreshComplete方法 无法取消刷新的bug