当Listview中的item与其中的Button/CheckBox的点击事件冲突时……


在平常开发中相信很多小伙伴都遇到过ScrollView嵌套Listview,ListView的item布局UI中不仅只是展示功能的UI,还有一些是可以点击的,比如:Button按钮,CheckBox多选控件,多布局的LinearLayout等等……,那么当父控件中的子控件也有自己的点击监听事件,这个时候两者会发生冲突,无法达到自己想要的状态,那么该如何解决呢?

我今天就给大家讲解一下我在开发中遇到的ListView嵌套Button时点击事件冲突解决方法和ListView嵌套CheckBox时点击事件冲突解决方法,其他的控件基本都可以类比着来(先都按这两种方法解决,如果不行再网搜其他方法,目前这两种方法足够本人使用了)。


一、ListView 嵌套 Button 时,点击事件冲突解决方法

当listview中的item与button的点击事件冲突时,需要给listview的item和button分别加一个属性:
  item的
根布局(如:LinearLayout、RelativeLayout……)中:android:descendantFocusability="blocksDescendants"
  Button中:android:focusable="false"


这样就可以分别设置两者(ListView 和 Button )的点击事件了,当点击的是Button时,就响应的是Button的监听,

当点击Item时,响应的就是ListView的监听。


二、ListView 嵌套 CheckBox时,点击事件冲突解决方法

当listview中的item与CheckBox的点击事件冲突时,需要给listview的CheckBox设置如下属性:
  CheckBox中:

①android:focusable="false"

②android:focusableInTouchMode="false"

③android:clickable="false"
  而item中不用设置其他属性,当点击item时,写逻辑改变CheckBox的状态即可。


这个是将CheckBox的点击事件监听抛给了父控件Item,所以让其失去焦点并不可点,这对于想实现列表选择比较有用

(如:在相册中选择多张图片的功能),如果想让两者都有都有各自的响应,可以参考第一条准则。


三、总结

小伙伴们如果掌握了以上两种方法,日常开发足够使用。我们路还长,你当初的热情还剩多少?


  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值