最近在项目中用到viewpager嵌套viewpager,但是就以普通的方式,在Fragment中的viewpager在滑动完之后,就会触发外部的viewpager的滑动,遇到这个问题之后,在网上搜寻,类似的帖子很多,但是有些效果不是很好,但是还是找到一种,今天在这里记录一下.
先看看最后完成的效果,以免耽误大家的时间。
接下来就是解决的方法了。
说到滑动冲突,第一个向导的就是事件传递上做做手脚,所以我们先想想,冲突产生的原因。
在最里面的viewpager滑动到最左或者最右边的时候,外边的viewpager就会拦截滑动事件,从而滑动到下一个item。
既然viewpager走了拦截事件,那就看onIntercepterTouchEvent方法的代码可以知道,在MotionEvent.ACTION_MOVE中会调用
if (dx != 0 && !isGutterDrag(mLastMotionX, dx)
&& canScroll(this, false, (int) dx, (int) x, (int) y)) {
// Nested view has scrollable area under this point. Let it be handled there.
mLastMotionX = x;
mLastMotionY = y;
mIsUnableToDrag =