Android RecycleView 透明图层滑动事件透传

557 阅读1分钟

现象:现在有一个RecycleView列表,由于要加一个透明图层,最后导致列表无法滑动

因为布局处于一个第三方的Popup中,而这个Popup对每个view调用了setOnClickListener()方法

处理过程,在透明层的view加入

android:clickable="false"
android:focusable="false"
android:focusableInTouchMode="false"

发现并没什么软用,到这里想破脑袋也没想到这是为什么

因为这是一个典型的事件分发事故,最顶层的事件我不想消费,那就直接往下传,按道理来说应该是可以被下一层的view接收到的啊, 最后不断地查资料,找到的都是对这个透明图层的view设置touch事件,我也试过了,还是不行

最后我把注意力放到了那个setOnClickListener()方法上,发现了

public void setOnClickListener(@Nullable OnClickListener l) {
    if (!isClickable()) {
        setClickable(true);
    }
    getListenerInfo().mOnClickListener = l;
}

原来在这里又把clickable又变回来了,好家伙 所以我就在最外面重新将clickable设置为false就行了