ListView中Item与Checkable子类控件抢焦点问题
Posted 安卓笔记侠
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ListView中Item与Checkable子类控件抢焦点问题相关的知识,希望对你有一定的参考价值。
android开发中,经常需要为ListView定制Adapter,绑定各种子类控件。
如果Item包含Button等Checkable的控件,那么就会发生点击Item无法响应的问题。原因是自己定义的Item中Button等Checkable控件先获取到了焦点。
解决方案有两种:
1.在ListView的Item的xml文件的根元素如LinearLayout中添加属性
android:descendantFocusability="blocksDescendants"
该属性定义了当View获取焦点时,viewGroup与子控件的关系:
(测试第三个可以,第一个没反应。。。)
beforeDescendants:viewgroup
会优先子类控件而获取到焦点afterDescendants:viewgroup
当子类控件不需要获取焦点时才获取焦点blocksDescendants:viewgroup
会覆盖子类控件而直接获得焦点(测试第三个可以,第一个没反应。。。)
2.在Checkable控件中添加属性:
android:focusable="false"
android:clickable="true"
添加位置
1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 android:id="@+id/linearLayout" 3 android:layout_width="match_parent" 4 android:layout_height="match_parent" 5 android:orientation="horizontal" 6 android:descendantFocusability="blocksDescendants" > 7 <Button android:id="@+id/button" 8 android:layout_width="50dp" 9 android:layout_height="100dp" 10 android:focusable="false" 11 android:clickable="true" 12 android:text="按钮"/> 13 <TextView 14 android:id="@+id/textView" 15 android:layout_width="50dp" 16 android:layout_height="100dp" 17 android:focusable="false" 18 android:clickable="true" 19 android:text="文本" /> 20 </LinearLayout>
以上是关于ListView中Item与Checkable子类控件抢焦点问题的主要内容,如果未能解决你的问题,请参考以下文章
Android 中listview的item点击事件失效了的解决办法
ListView的OnItemClick无法响应以及子Item控件的事件处理。
Android自定义ListView的Item无法响应OnItemClick的解决办法
我的Android进阶之旅------>Android中ListView中嵌套(ListView)控件时item的点击事件不起作的问题解决方法