尝试过设置NestedScrollView的属性,android:fillViewport="true",但是没有用,关键还是事件分发机制
重写NestedScrollView的onInterceptTouchEvent,决定是否拦截 private float mDownPosX; private float mDownPosY;
@Override public boolean onInterceptTouchEvent(MotionEvent ev) { final float x = ev.getX(); final float y = ev.getY(); final int action = ev.getAction(); switch (action) { case MotionEvent.ACTION_DOWN: mDownPosX = x; mDownPosY = y; break; case MotionEvent.ACTION_MOVE: final float deltaX = Math.abs(x - mDownPosX); final float deltaY = Math.abs(y - mDownPosY); //是否拦截的判断的依据,横轴位移大于纵轴,即左右滑动时不拦截 if (deltaX > deltaY) { return false; } } return super.onInterceptTouchEvent(ev); }
如果你的ViewPager的onInterceptTouchEvent是返回false,即表示你的ViewPage不拦截任何事件