您的位置:首页 > 其它

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

2017-09-30 10:59 381 查看
在平常开发中相信很多小伙伴都遇到过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,所以让其失去焦点并不可点,这对于想实现列表选择比较有用

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

三、总结

小伙伴们如果掌握了以上两种方法,日常开发足够使用。我们路还长,你当初的热情还剩多少?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐