android:descendantFocusability 参数解决焦点大问题

转载 2013年12月04日 15:57:52

    开发中很常见的一个问题,项目中的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点击的灵异事件告一段落。心得:遇到不会不懂的地方除了网上查询资料之外,也可以多多去尝试每种属性的作用,多阅读官方文档(我始终觉得还是读原文的比翻译的理解的会更好)。

android中ListView焦点强占解决

1.在listview中经常会出现焦点抢占的情况,如果在list item 上添加 checkbox、button、imagebutton、radiobutton…等事件性控件 ,则他们将优先有响应权...
  • llengnuo
  • llengnuo
  • 2017年06月04日 00:16
  • 343

EditText无法获取焦点 获取焦点无法编辑(android:descendantFocusability用法简析 )

android:descendantFocusability用法简析  开发中很常见的一个问题,项目中的listview不仅仅是简单的文字,常常需要自己定义listview,自己的Adapter...
  • zz_mm
  • zz_mm
  • 2015年07月01日 18:04
  • 760

android:descendantFocusability用法简析【listview gridview 焦点问题】

开发中很常见的一个问题,项目中的listview不仅仅是简单的文字,常常需要自己定义listview,自己的Adapter去继承BaseAdapter,在adapter中按照需求进行编写,问题就出现了...
  • feizhixuan46789
  • feizhixuan46789
  • 2014年04月04日 17:19
  • 4463

android:descendantFocusability焦点

开发中很常见的一个问题,项目中的GridView不仅仅是简单的文字和图片,常常需要自己定义GridView,问题就出现了,可能会发生点击每一个item的时候 没有反应,无法获取的焦点此方法适用于所有...
  • c549181453
  • c549181453
  • 2014年08月11日 11:58
  • 356

关于android:descendantFocusability一些用法感触

项目中有这样的需求:ListView中Item包含CheckBox和TextView,textview中需要对部分关键字添加点击事件。问题在于item总是抢占textview的点击事件,事件分发中出现...
  • android_gogogo
  • android_gogogo
  • 2016年11月28日 13:00
  • 1388

android:descendantFocusability用法

项目中的listview不仅仅是简单的文字,常常需要自己定义listview,自己的Adapter去继承BaseAdapter,在adapter中按照需求进行编写,诸如ImageButton,Butt...
  • telencool
  • telencool
  • 2013年12月23日 20:27
  • 3793

通过android:descendantFocusability解决listview每一项或项中view无法获取焦点的问题

开发中很常见的一个问题,项目中的listview不仅仅是简单的文字,常常需要自己定义listview,自己的Adapter去继承BaseAdapter,在adapter中按照需求进行编写,问题就出现了...
  • zmywly
  • zmywly
  • 2014年11月14日 17:58
  • 1629

android:descendantFocusability=”blocksDescendants”的用法

开发中很常见的一个问题,项目中的listview不仅仅是简单的文字,常常需要自己定义listview,自己的Adapter去继承BaseAdapter,在adapter中按照需求进行编写,问题就出现了...
  • hxqneuq2012
  • hxqneuq2012
  • 2017年03月15日 19:36
  • 578

善用backtrace解决大问题

一.用途: 主要用于程序异常退出时寻找错误原因 二.功能: 回溯堆栈,简单的说就是可以列出当前函数调用关系 三.原理: 1.  通过对当前堆栈的分析,找到其上层函数在栈中的帧地址...
  • dragon101788
  • dragon101788
  • 2014年01月22日 17:39
  • 1128

Android布局为,Fragment,ScrollView,Viewpager切换焦点问题

当页面应用Fragment来实现TabHost功能效果时,Fragment中添加Fragment类A,B,C。 类A中的布局为Viewpager(  add   Fragment类),加入的Frag...
  • arui0322
  • arui0322
  • 2015年04月03日 17:25
  • 1782
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android:descendantFocusability 参数解决焦点大问题
举报原因:
原因补充:

(最多只允许输入30个字)