下面的方法 就是嵌套滑动时 解决滑动冲突的一个简单的方案 当你已经很熟悉 了 view的事件传播机制的话 那就 很容易看懂这个代码了
下面的代码 只是重写了 内部嵌套View的disPatchToucheEvent
下面这段代码只是解决横向滑动冲突 不过你可以自己改动 纵向
private PointF downP = new PointF(); private PointF curP = new PointF(); @Override public boolean dispatchTouchEvent(MotionEvent arg0) { curP.x = arg0.getX(); curP.y = arg0.getY(); if (arg0.getAction() == MotionEvent.ACTION_DOWN) { downP.x = arg0.getX(); downP.y = arg0.getY(); getParent().requestDisallowInterceptTouchEvent(true); } if (arg0.getAction() == MotionEvent.ACTION_MOVE) { //横向 滑动 if (Math.abs(curP.x - downP.x) > Math.abs(curP.y - downP.y)) { return super.dispatchTouchEvent(arg0); } else {//纵向 getParent().requestDisallowInterceptTouchEvent(false); return false; } } return super.dispatchTouchEvent(arg0); }