经常会碰到ListView Item和子控件焦点冲突问题,查了很多资料后发现问题出在listview item的父容器布局中 android:descendantFocusability属性和子控件 android:focus属性的冲突

android:descendantFocusability属性共有三个取值,分别为

beforeDescendants:viewgroup会优先其子类控件而获取到焦点
                afterDescendants:viewgroup 只有当其子类控件不需要获取焦点时才获取焦点
                blocksDescendants:viewgroup 会覆盖子类控件而直接获得焦点

下面我用列表形式展示设置不同属性的结果:

android:descendantFocusability="blocksDescendants":

focusable                        item可点击性                          子控件(Button等)可点击性

false                                       true                                                true

true                                        true                                                true

android:descendantFocusability="afterDescendants":

false                                       true                                                true

true                                       false                                                true

android:descendantFocusability="beforeDescendants":

false                                       true                                                true

true                                       false                                               true

由此可见,当listview有子控件存在时,子控件获取焦点的优先级要高于listview item本身,参考上表结果,如果想要listview item 无法点击,只相应子控件点击事件可设置

父容器android:descendantFocusability="afterDescendants"或者android:descendantFocusability="beforeDescendants":并设置子控件android:focusable="true"。除此之外分别对父容器和子控件的上述属性对应设置即可实现不同效果。

Android ListView Item与子控件焦点问题相关推荐

  1. 【Android】HorizontalScrollView内子控件横向拖拽

    前言 网上ListView上下拖动的例子有,效果也很好,但是项目要横着拖的,只要硬着头皮自己写(主要是没找到合适的),参考文章1修改而来,分享一下. 声明 欢迎转载,但请保留文章原始出处:)  博客园 ...

  2. listview item里面的控件点击事件

    listview item点击事件(https://www.google.com.hk/?gws_rd=cr%2Cssl#newwindow=1&safe=strict&q=listv ...

  3. android 两端对齐,LinearLayout子控件两端对齐

    1.实例: android:id="@+id/settingBtnContainer" android:layout_width="match_parent" ...

  4. android item 点击 获取position,Android ListView 子控件onClick正确获取position的方法

    在实际开发中,我们有时候不仅需要响应ListView的onItemClick,还需要响应其子控件的点击事件,这个时候我们就会 发现,由于复用等原因,如果直接在子控件的onClick事件中调用getVi ...

  5. android 控件覆盖关系,安卓子控件抢占父控件点击事件或者焦点问题

    开发中很常见的一个问题,项目中的lListview不仅仅是简单的文字,常常需要自己定义listview,自己的Adapter去继承BaseAdapter,在adapter中按照需求进行编写,问题就出现 ...

  6. 关于安卓listview获得item中的控件问题

    我的程序里面是用到了安卓的listview来显示数据,主要用SimpleAdapter适配器,然而怎么获取listview的item中的控件呢?就如说我这里做了一个显示地址管理. 而让我苦恼的是要怎么 ...

  7. Android --- RecycleView获取第 i 个 item 里面的控件并进行赋值

    今天些项目的时候遇到了这样的问题,我想要操作 RecycleView 中某个 item 里面的子控件,通过度娘找到了一些方法,但是感觉都不全,下面整理一下: 直接上代码: View view = ma ...

  8. 记录下帮助一位网友解决的关于android子控件的onTouch或onClick和父OnTouch 冲突的问题。

    记录下帮助一位网友解决的关于android子控件的onTouch或onClick和父OnTouch 冲突的问题. 参考文章: (1)记录下帮助一位网友解决的关于android子控件的onTouch或o ...

  9. android关于 子控件超出父控件范围的注意点

    通过 搜索引擎的搜索,我们知道了android:clipChildren = "false"  这个属性 可以让父view 在子view超出以后不切割子view. 那么我现在说几个 ...

最新文章

  1. php中this,self,parent三个关键字
  2. win2012服务器硬盘分区,Windows Server 2008/2012更改磁盘分区大小教程
  3. Codeforces Round #211 (Div. 2)
  4. PAT (Advanced Level) 1035. Password (20)
  5. Verilog HDL语言实现的单周期CPU设计(全部代码及其注释)
  6. 初始化mysql的数据库失败_初始化mysql的数据库失败怎么办
  7. pcb过孔漏铜_【企业资讯】大正瑞地:专注PCB药水二十年,品质、性能可靠
  8. python逻辑表达式是什么_如何在Python中处理逻辑表达式?
  9. 2021-06-13list map set 并发问题
  10. SQL Server 创建数据库关系图时 索引超过数组界限。(已解决)
  11. AI语音交互机器人,揭秘你不知道的隐藏功能
  12. 基于Proteus学习单片机系列(十一)——LCD12864
  13. 携程景区爬取 + 保存Excel
  14. VSCode 的扩展包C/C++ IntelliSense, debugging, and code browsing的IntelliSense功能无法使用,远程服务器linux上面的不能用
  15. mongodb学习之:mongo安装以及远程访问
  16. 计算卫星高度角、方位角
  17. 【Spring学习】AOP实现日志记录
  18. 网上播放.flv格式的二种程序
  19. 游戏二次元场景插画教程,常见的6种构图方法分享
  20. PHP 实现阿里云短信API对接(登录/注册参考)

热门文章

  1. npm, cnpm的安装与卸载
  2. 「镁客·请讲」FXG Nikk Mitchell:优质VR内容能够带你真正进入细节
  3. 使用nvm管理node.js版本以及更换npm淘宝镜像源
  4. python中^是什么意思
  5. java获取服务器的cpu和内存使用率
  6. python模拟登录爬取数据_python 模拟登录爬取淘宝数据
  7. uin-app 使用canvas画简易海报
  8. vue3小兔鲜商城项目学习笔记+资料分享01
  9. 解析世界杯超大规模直播场景下的码率控制
  10. eclipse连接navicat