LinearLayout包裹RecycleView点击事件不响应

LinearLayout包裹RecyclerView,如果想给整个布局设置点击事件,发现当点击列表部分的时候点击事件不响应,猜测可能被recyclerview消耗了点击事件,所以只要让recycleview不拦截点击事件并且子view不消费这个事件,那么点击事件就会回传给父view也就是最外层的LinearLayout才处理这个事件,于是看了一下recycleview的源码:

通过onInterceptTouchEvent()和onTouchEvent()这2个方法,发现了一个参数mLayoutFrozen,如果他为true的时候,recycleview这2个方法都会返回false,也就不会拦截这个事件了。于是我找到设置这个方法的地方:

上面的注释也写的很清楚,设置他为true,相当于冻结了recycleview,不能滚动不能点击,但是设置了之后还是无法响应点击事件,于是我又看到注释上面写了 {@link #setAdapter(Adapter)} and {@link #swapAdapter(Adapter, boolean)} will automatically * stop frozen. 这句话意思就是setAdapter(Adapter)会把这个参数设为false,于是我找到setAdapter方法:

果然,于是我在setAdapter之后再setLayoutFrozen(),这样就达到需求了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值