要求:一个ViewPager中含有一四个Fragment 其中两个Fragment中含有ViewPager
首先滑动父ViewPager中的Fragment 当滑到含有ViewPager的Fragment时 继续滑动滑动的是Fragment中的Viewpager
当Fragment中的ViewPager滑动完成以后 继续滑动父ViewPager到下一个Fragment
解决:
首先 ViewPager嵌套 不做处理子ViewPager会接触不到事件 没有滑动效果
这时候的是在子ViewPager当中的dispatchTouchEvent(MotionEvent motionEvent)调用
getParent().requestDisallowInterceptTouchEvent(true);方法表示我自己的事情我自己处理 然后子ViewPager能够滑动了
要做到联动 需要添加判断 同时将事件返回上传给上层父Viewpager
@Override public boolean dispatchTouchEvent(MotionEvent motionEvent) { try { switch (motionEvent.getAction()) { case MotionEvent.ACTION_DOWN: startX = motionEvent.getRawX(); break; case MotionEvent.ACTION_MOVE: setMoveTouchEvent(motionEvent); startX = motionEvent.getRawX(); break; } } catch (IllegalArgumentException e) { e.printStackTrace(); } return super.dispatchTouchEvent(motionEvent); } private void setMoveTouchEvent(MotionEvent motionEvent) { if (null == GNHomeActivity.contentViewPager) return; float disX = motionEvent.getRawX() - startX; if ((disX > 0 && pagerView.getCurrentItem() == 0 && GNHomeActivity.contentViewPager.getCurrentItem() != 0) || (disX < 0 && pagerView.getCurrentItem() == pagerViewList.size() - 1)) { return; } getParent().requestDisallowInterceptTouchEvent(true); } }