此问题只需要重写被嵌入的横向滑动的recyclerview的dispatchTouchEvent方法,使用requestDisallowInterceptTouchEvent(true)方法,阻止竖向滑动事件向上传递即可,具体代码如下:
public class RecyclerView2 extends RecyclerView { private int startX; private int startY; private PagerSnapHelper pagerSnapHelper; public RecyclerView2(@NonNull Context context) { super(context); } public RecyclerView2(@NonNull Context context, @Nullable AttributeSet attrs) { super(context, attrs); } public RecyclerView2(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @Override public boolean dispatchTouchEvent(MotionEvent ev) { switch (ev.getAction()) { case MotionEvent.ACTION_DOWN: startX = (int) ev.getX(); startY = (int) ev.getY(); getParent().requestDisallowInterceptTouchEvent(true);