关于android:descendantFocusability一些用法感触 - Go语言中文社区

关于android:descendantFocusability一些用法感触


项目中有这样的需求:ListView中Item包含CheckBox和TextView,textview中需要对部分关键字添加点击事件。问题在于item总是抢占textview的点击事件,事件分发中出现了冲突。最复杂的方法,可以自定义listview,重写事件分发相关方法,可以解决这个问题。但是自定义控件比较麻烦,自己也不自信。众里寻他千百度哭,蓦然回首,android:descendantFocusability就在灯火阑珊处奋斗,成功帮宝宝处理好冲突。

官方是这样来解释descendantFocusability

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会覆盖子类控件而直接获得焦点

用法:这个属性直接丢给viewgroup

代码如下:

<ListView
                    android:descendantFocusability="blocksDescendants"
                    android:focusable="false"
                    android:divider="@drawable/leftxian1"
                    android:id="@+id/flfg_content"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                     />

listview item 中textview:

<TextView
        android:focusable="true"
        android:padding="5dp"
        android:gravity="center_vertical"
        android:textColor="@color/black"
        android:id="@+id/text_law"
        android:layout_weight="1"
        android:layout_width="0dp"
        android:layout_height="wrap_content" ></TextView>
这个组合成功帮助宝宝渡过危机偷笑

这个属性在后面中使用不少,比如给viewGroup设置点击事件,直接告诉他暴力覆盖子控件点击事件,稳稳的幸福。

新手上路,有错误和不足的地方欢迎大婶拍砖害羞



版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/android_gogogo/article/details/53376178
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-03-07 21:56:21
  • 阅读 ( 937 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢