关于Android中ExpandableListView子项是Button控件而单击事件没有响应的问题

本文探讨了在Android中使用ExpandableListView时,如果子项是Button,可能导致单击事件无响应的问题。解决方法包括确保BaseExpandableListAdapter的isChildSelectable返回true,实现OnChildClickListener,并在Button上设置setFocusable(false)和setClickable(false),以确保点击事件由ExpandableListView的OnChildClickListener处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

嗯,第一次发文章,请多多指教。

好的,正文开始:

ExpandableListView控件的单击事件的要求大多数大神都已经说过了

1. BaseExpandableListAdapter的重写方法isChildSelectable必须为true。

2.ExpandableListView控件实现ExpandableListView.OnChildClickListener接口,绑定单击事件。

3.ExpandableListView的子项是Button,CheckBox等本身聚焦的控件,将控件的setFocusable方法设为false,禁用控件的聚焦

上面的内容是和大神们一样的。


说点我自己实验的东西吧

1.ExpandableListView的子项是本身具有聚焦的控件时,比如Button控件,如果ExpandableListView子项单击事件没有成功,禁用setFocusable后还是没有成功,那就是Button本身的单击事件成功运行了,而不是控件本身的聚焦问题,所以这时候应该将setClickable设为false,就可以了

实验代码图


结果


从上面的三张图可以看出ExpandableListView单击事件并没有运行,而是Button的单击事件运行了,所以这跟Button的焦点本身没有问题

下面设Button的setClickable为false,图片如下




从上面的实验结果来看是因为点击时点击的是Button而不是ExpandableListView的子项,所以响应的自然是Button的OnClickListener,而不是ExpandableListView的OnChildClickListener,这时候设Button的setClickable为false,点击的自然ExpandableListView本身的子项,而不是Button。

哭,感觉还是没有说好,请不要喷的太厉害,有问题的地方请多多指教(感觉还是没有把重点把握好)。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值