`
hold_on
  • 浏览: 452056 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

android:descendantFocusability

阅读更多

  开发中很常见的一个问题,项目中的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 descendantFocusability用法简析

    android descendantFocusability用法简析

    android:descendantFocusability方法介绍

    开发中很常见的一个问题,项目中的listview不仅仅是简单的文字,常常需要自己定义listview,问题就出现了,可能会发生点击每一个item的时候没有反应,无法获取的焦点

    Android listview和button点击事件冲突问题解决方法

    按照网上说的通常是在ListView的Item布局中给Button加 android:focusable="false"在Item根布局加android:descendantFocusability="blocksDescendants" 。这样做之后item确实可以点击了,但又会出现另外一个问题 点击...

    安卓开发过程中总结的一些案例

    # ShopCart 案例 ## 截图 ![购物车](screenshots/shopcart.png) ... * recycleview 添加 android:descendantFocusability="beforeDescendants";activity 添加 android:windowSoftInputMode="stateHidden|adjust

    listView和scrollView焦点冲突问题

    android:descendantFocusability="blocksDescendants"这句,并固定listview的高度属性(如:android:layout_height="220dp")。覆盖住scrollview的焦点,使scrollview不能滑动,listview可以滑动,并确保listview的...

    Android 中ListView setOnItemClickListener点击无效原因分析

    前言 最近在做项目的过程中,在使用listview的时候遇到了设置item监听事件的时候在没有回调onItemClick 方法的问题。我的情况是在item中有一...2、在item最外层添加属性 android:descendantFocusability=”blocksDesce

    下拉选择列表

    1 准备图片 2写布局 3 写item布局 建立item.xml (注意添加android:descendantFocusability="blocksDescendants"属性) 4映射布局变量 5初始化listview 6点击下拉按钮事件处理 7下拉列表点击处理

    Android仿泡泡窗实现下拉菜单条实例代码

    假如listview的item中有Button,ImageButton,CheckBox等会强制获取焦点的view 此时,listview的item无法获取焦点,从而无法被点击 解决方法:给item的根布局增加以下属性 Android:descendantFocusability=...

    Android textview 实现长按自由选择复制功能的方法

    这里有一个大坑,我的viewGroup中有一个这个属性android:descendantFocusability=”blocksDescendants” 开始没有注意到,试了好多方法都不行,后来才看到这个属性,顺便科普一下,这个属性有三个值~ ...

    我在学习Andrid Studio时候碰到的小问题

    android:descendantFocusability=“blocksDescendants” 防止主控件无法响应点击 android:focusable=“false” 防止子控件,例如按钮无响应 3. 首先,获取需要加载的布局文件order.xml, 这里采用的是LayoutInflater,...

    Listview中Button抢占焦点的解决方法

    Item xml 根节点添加 android:descendantFocusability=”blocksDescendants” Button 设置 android:focusable=”false” 这样点击Button 和ListView Item 可以分别响应自己的点击事件 开发中很常见的一个问题,项目...

    Android自定义ListView单击事件失效的解决方法

    因为自带的listView不能满足项目需求,通过实现自己的Adapter去继承...在item的根目录加入android:descendantFocusability=”blocksDescendants” <?xml version=1.0 encoding=utf-8?> <LinearLayout

    树结构,点击父结构,获取子结构数据

    通过lv.setSingle(false);设置是单选还是多选 List<TreeElement> treeElements = parser.getTreeElements_system(listSystemInfo, 1, true);...android:descendantFocusability="blocksDescendants" 解决焦点问题。

    安卓开发入门基础之使用adapter实现对Listview的点击效果

    总体是垂直的线性布局,并且需要加上android:descendantFocusability=”blocksDescendants”来夺取焦点 主要为了实现点击list内的每一项以及点击按钮都有不同的反应 里面放一个textview做标题,一个listview即可 bg....

    Android开发之机顶盒上gridview和ScrollView的使用详解

    android:descendantFocusability=”afterDescendants” <ScrollView nandroid:id=@+id/scroll_content android:layout_width px android:layout_height=600.0px android:layout_x px android:layout_y=258.0px> &...

    listView的item中有checkbox,导致setOnItemClick失效的原因及解决办法

    Android:clickable=true,之后导致item点击事件失效,对根布局设置android:descendantFocusability=blocksDescendants“,以及对checkbox设置android:focusable=false都不会起作用,所以item根布局不要设置android:...

    关于Android中ListView嵌套GridView的问题

    问题 在Android开发中,遇到一个问题,是...android:descendantFocusability=blocksDescendants 2.在Adapter中添加 holder.mGridView.setClickable(false); holder.mGridView.setPressed(false); holder.mGridView.s

    完美解决ListView和CheckBox的焦点冲突及CheckBox的复用问题

    完美解决了ListView和CheckBox的焦点冲突及CheckBox的复用问题,讲解了CheckBox的全选、反选、删除功能及在下拉刷新和下拉加载中如何保存CheckBox的先前的选中状态

    Android 中ListView点击Item无响应问题的解决办法

    如果listitem里面包括button或者checkbox等控件,默认情况下listitem会失去焦点,导致无法响应item的事件,最常用的解决办法是在listitem的布局文件中设置descendantFocusability属性。 item的布局文件: <?xml ...

Global site tag (gtag.js) - Google Analytics