重写ScrollView即可
public class MyScrollView extends ScrollView {
private float mLastXIntercept = 0f;
private float mLastYIntercept = 0f;
public MyScrollView(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
boolean intercepted = false;
float x = ev.getX();
float y = ev.getY();
int action = ev.getAction() & MotionEvent.ACTION_MASK;
switch (action) {
case MotionEvent.ACTION_DOWN: {
intercepted = false;
// 初始化mActivePointerId
super.onInterceptTouchEvent(ev);
break;
}
case MotionEvent.ACTION_MOVE: {
// 横坐标位移增量
float deltaX = x - mLastXIntercept;
// 纵坐标位移增量
float deltaY = y - mLastYIntercept;
if (Math.abs(deltaX) < Math.abs(deltaY)) {
intercepted = true;
} else {
intercepted = false;
}
break;
}
case MotionEvent.ACTION_UP: {
intercepted = false;
break;
}
}
mLastXIntercept = x;
mLastYIntercept = y;
return intercepted;
}
}
用NestScrollView也可以解决,但是代码截屏时会发现有问题。
用这个,既可以解决滑动冲突,又可以解决截屏出问题。