问题描述 使用BRVAH (大猴子)RecycleView 嵌套RecycleView 点击Item 子类RecycleView内容的部分无法被点击。
解决办法 将子类RecycleView 重新定义一下 对其触摸事件让自身控件对其事件进行消费 (通俗的讲就是不让子类的RecycleView 自己有点击事件) 把这个替换成子类的RecycleView 完美解决问题。
【 NoTouchRecyclerViewX 工具类】
/** * Created by Xia_焱 on 2020/5/14. * 邮箱:xiaohaotianV@163.com */
public class NoTouchRecyclerViewX extends RecyclerView {
public NoTouchRecyclerViewX(Context context) {
super(context);
}
public NoTouchRecyclerViewX(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
}
public NoTouchRecyclerViewX(Context context, @Nullable AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
public boolean onTouchEvent(MotionEvent e) {
return false;
}
@Override
public boolean onInterceptTouchEvent(MotionEvent e) {
return true;
}
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
return super.dispatchTouchEvent(ev);
}
}
科普一下 事件分发中如果方法返回true,那么代表事件就此消费,不会继续往别的地方传了,事件终止。
dispatchTouchEvent 和 onTouchEvent 一旦return true,事件就停止传递了,对于return true事件被消费了,消费了的意思就是事件走到这里就是终点,不会往下传,没有谁能再收到这个事件了。
[希望这篇文章可以帮到你]