Android 解决recylerview和viewPager 滑动冲突问题

工作产品中有一个功能是viewpager中嵌套着recylerviewrecylerview是横向滑动的,因此造成一个现象就是当滑动recylerview的时候,可能会造成viewpager的滑动,造成十分不好的用户体验。

拿到这个问题的时候,想到的肯定就是事件的分发,思路很简单,当点击到recylerview的时候,则确定将事件消费掉,同时告诉父控件(也就是viewPager),不要消费这个事件了,完全有recyleview来处理就好了。ok,思路有了就代码实现了,其实只需要重写一下dispatchTouchEvent这个方法就好了。

public class MyRecyclerView extends RecyclerView {

   public MyRecyclerView(Context context) {
           super(context);
    }

   public MyRecyclerView(Context context, @Nullable AttributeSet attrs)
   {
          super(context, attrs);
    }

   public MyRecyclerView(Context context, @Nullable AttributeSet attrs, int defStyle) {
         super(context, attrs, defStyle);
     }

   @Override
    public boolean dispatchTouchEvent(MotionEvent ev) {
          //解决recyclerView和viewPager的滑动影响
          //当滑动recyclerView时,告知父控件不要拦截事件,交给子view处理
          getParent().requestDisallowInterceptTouchEvent(true);
         return super.dispatchTouchEvent(ev);
     }
}

你可能感兴趣的:(Android 解决recylerview和viewPager 滑动冲突问题)