LinearLayout包裹RecycleView点击事件不响应

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

经过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(),这样就达到需求了。
相关文章
相关标签/搜索