解决办法

Item xml 根节点添加 android:descendantFocusability="blocksDescendants"Button 设置android:focusable="false"这样点击Button 和ListView Item 可以分别响应自己的点击事件

关于descendantFocusability

   开发中很常见的一个问题,项目中的listview不仅仅是简单的文字,常常需要自己定义listview,自己的Adapter去继承BaseAdapter,在adapter中按照需求进行编写,问题就出现了,可能会发生点击每一个item的时候没有反应,无法获取的焦点。原因多半是由于在你自己定义的Item中存在诸如ImageButton,Button,CheckBox等子控件(也可以说是Button或者Checkable的子类控件),此时这些子控件会将焦点获取到,所以常常当点击item时变化的是子控件,item本身的点击没有响应。    这时候就可以使用descendantFocusability来解决啦该属性是当一个为view获取焦点时,定义viewGroup和其子控件两者之间的关系。属性的值有三种:        beforeDescendants:viewgroup会优先其子类控件而获取到焦点        afterDescendants:viewgroup只有当其子类控件不需要获取焦点时才获取焦点        blocksDescendants:viewgroup会覆盖子类控件而直接获得焦点 通常我们用到的是第三种,即在Item布局的根布局加上**android:descendantFocusability=”blocksDescendants”**的属性就好了,至此listview点击的灵异事件告一段落。心得:遇到不会不懂的地方除了网上查询资料之外,也可以多多去尝试每种属性的作用,多阅读官方文档(我始终觉得还是读原文的比翻译的理解的会更好)。

本文参考

http://www.cnblogs.com/eyu8874521/archive/2012/10/17/2727882.html

http://www.xuebuyuan.com/1730416.html

更多相关文章

  1. GitHub上几种Android表格控件
  2. 再来说说Activity
  3. Android入门第十二篇之Gallery
  4. Android学习笔记(三)UI
  5. Android(安卓)关于嵌套listView时onItemClick事件不响应的解决办
  6. Android基础控件——EditText隐藏软键盘、Enter键隐藏软键盘、点
  7. android 拖拉控件
  8. 关于Android中Dialog点击屏幕外失去焦点消失的问题
  9. Android自定义控件之自定义属性解析

随机推荐

  1. Android(安卓)格式化内部存储
  2. Android获取设备状态栏status bar高度的
  3. android文件缓存,并SD卡创建目录未能解决
  4. android布局属性详解
  5. 阻止android软键盘自动弹出
  6. android 中 系统日期时间的获取
  7. gradle 配置文件 build.gradle 属性详解
  8. android开机启动一个Service实例
  9. Android(安卓)格式化内部存储
  10. android 发送自定义广播以及接收自定义广