android:descendantFocusability用法简析
发布日期:2021-11-12 07:57:36 浏览次数:30 分类:技术文章

本文共 922 字,大约阅读时间需要 3 分钟。

原文地址:http://www.cnblogs.com/eyu8874521/archive/2012/10/17/2727882.html

开发中很常见的一个问题,项目中的listview不仅仅是简单的文字,常常需要自己定义listview,自己的Adapter去继承BaseAdapter,在adapter中按照需求进行编写,问题就出现了,可能会发生点击每一个item的时候没有反应,无法获取的焦点。原因多半是由于在你自己定义的Item中存在诸如ImageButton,Button,CheckBox等子控件(也可以说是Button或者Checkable的子类控件),此时这些子控件会将焦点获取到,所以常常当点击item时变化的是子控件,item本身的点击没有响应。

    这时候就可以使用descendantFocusability来解决啦,API描述如下:

android:descendantFocusability

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.

 

该属性是当一个为view获取焦点时,定义viewGroup和其子控件两者之间的关系。

属性的值有三种:

        beforeDescendants:viewgroup会优先其子类控件而获取到焦点

        afterDescendants:viewgroup只有当其子类控件不需要获取焦点时才获取焦点

        blocksDescendants:viewgroup会覆盖子类控件而直接获得焦点

 

通常我们用到的是第三种,即在Item布局的根布局加上android:descendantFocusability=”blocksDescendants”的属性就好了,至此listview点击的灵异事件告一段落。心得:遇到不会不懂的地方除了网上查询资料之外,也可以多多去尝试每种属性的作用,多阅读官方文档(我始终觉得还是读原文的比翻译的理解的会更好)。

转载地址:https://blog.csdn.net/happy_love1990/article/details/78316399 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:android 如何动态设置View的margin和padding
下一篇:Android HTTP数据格式的解析

发表评论

最新留言

哈哈,博客排版真的漂亮呢~
[***.90.31.176]2024年03月29日 17时59分42秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

Android Studio 实现实现学生信息的查询 -源代码 三(Servlet + 连接MySql数据库) (JSON通信) 2019-04-26
Android Studio 实现实现学生信息的增删改查 -源代码 四(Servlet + 连接MySql数据库) 2019-04-26
Java SSM 项目实战 day07用户角色关联操作,添加角色,以及添加权限 2019-04-26
Java SSM 项目实战 day08 方法级别的权限操作 服务器端的权限控制(JSR-250注解)(支持表达式的注解)(@Secured)以及页面端的权限控制 2019-04-26
(精华)2020年6月25日 JavaScript高级篇 对象属性 2019-04-26
(精华)2020年6月25日 JavaScript高级篇 数据类型 2019-04-26
(精华)2020年6月25日 JavaScript高级篇 对象类型 2019-04-26
(精华)2020年6月25日 JavaScript高级篇 click事件(冒泡,捕获,委托) 2019-04-26
(精华)2020年7月4日 JavaScript高级篇 ES6(class类的继承) 2019-04-26
(精华)2020年7月5日 JavaScript高级篇 ES6(async和await) 2019-04-26
(精华)2020年7月5日 Node.js require和module 2019-04-26
(精华)2020年7月7日 Node.js http,https,tcp服务的创建 2019-04-26
(精华)2020年7月8日 Node.js connect的使用文件上传 2019-04-26
(精华)2020年7月8日 Node.js express(跨域处理) 2019-04-26
(精华)2020年7月12日 webpack 增加 babel⽀持 2019-04-26
(精华)2020年7月12日 webpack 常见插件的使用 2019-04-26
(精华)2020年7月12日 webpack 代码分割和多线程打包 2019-04-26
(精华)2020年7月12日 vue v-show和v-if的使用 2019-04-26
(精华)2020年7月12日 vue 事件参数$event 2019-04-26
(精华)2020年7月12日 vue 键盘事件 2019-04-26