android之descendantFocusability用法简析[通俗易懂]

在做音乐列表ListView的时候,做好之后发现点击item有时候没有反应,仅仅是点击到了里面的控件,后来百度发现,这是开发中很常见的一个问题,项目中的listview不仅仅是简单的文字,常常需要自己定义listview,自己的Adapter去继承BaseAdapter,在adapter中按照需求进行编写,问题就出现了,由于在你自己定义的Item中存在诸如ImageButton,Button,

大家好,又见面了,我是全栈君。

在做音乐列表ListView的时候,做好之后发现点击item有时候没有反应,仅仅是点击到了里面的控件,

后来百度发现,这是开发中很常见的一个问题,项目中的listview不仅仅是简单的文字,常常需要自己定义listview,自己的Adapter去继承BaseAdapter,在adapter中按照需求进行编写,问题就出现了,由于在你自己定义的Item中存在诸如ImageButton,Button,CheckBox等子控件,此时这些子控件会将焦点获取到,所以常常当点击item时变化的是子控件,item本身的点击没有响应。

这时候就可以使用descendantFocusability来解决啦,该属性是当一个为view获取焦点时,定义viewGroup和其子控件两者之间的关系。

属性的值有三种:

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

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

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

 

通常我们用到的是第三种,即在Item布局的根布局加上android:descendantFocusability=”blocksDescendants”的属性就好了.

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/121450.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 文件和文件流

    文件和文件流文件和文件流1.File类Java.io.File类可以获取文件以及文件夹的一些基本的属性常用的方法文件名称,路径,大小,判断是否存在,删除,创建//创建一个文件对象(可以是文件,可以是文件夹) Filefile=newFile(“e:/java_text.txt”); //基本属性 booleancanWriter=file.canWrite(); …

    2022年10月24日
  • springbootapplication运行机制_航空器运行阶段是指什么

    springbootapplication运行机制_航空器运行阶段是指什么SpringApplication运行阶段围绕run(String…)方法展开,该过程结合初始化阶段完成的状态进一步完善了运行时所需要准备的资源,随后启动Spring应用上下文,在此期间伴随SpringBoot和Spring事件的触发,形成完整的SpringApplication生命周期:SpringApplication准备阶段SpringApplication启动阶段SpringApplication启动后阶段1、SpringApplication准备阶段本阶段涉及的范围从run(St

  • C# 发送邮件email

    C# 发送邮件email

  • c# 看门狗 程序_看门狗制作东西怎么切换

    c# 看门狗 程序_看门狗制作东西怎么切换C#制作简单的看门狗程序这个类实现了程序退出能重启,但是程序停止运行弹出对话框,进程并没有退出却无法重启。希望有好建议处理这个bug的朋友提出你们的宝贵意见。源码如下:usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Diagnostics;usi

  • loadlibrary函数失败,错误码:126

    loadlibrary函数失败,错误码:126在项目中调用LoadLibrary函数加载dll文件,目录和文件名都是正确的,但是函数报错,GetLastError函数返回126.一直没有找到解决办法,使用depends.exe查看dll链接的其他dll,都是黄色的,还以为是这里的问题,后来再使用depends工具查看能正常运行的dll,发现也是黄色的。感觉应该是加载其他dll时出的问题,为了省事,在编译时,有些不是太重要的dll文件都

  • 合格的程序员的基本素质

    中国有很多小朋友,他们18,9岁或21,2岁,通过自学也写了不少代码,他们有的代码写的很漂亮,一些技术细节相当出众,也很有钻研精神,但是他们被一些错误的认识和观点左右,缺乏对系统,对程序的整体理解能力

    2021年12月21日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号