ScrollView与ViewPager的滑动冲突问题

在开发过程中,可能会遇到ScrollView和ViewPager组合的情况,虽然不同与ScrollView和ListView的情况(一般两者都为纵向滑动),但是仍然存在滑动冲突问题,在短距离的滑动情况下体验非常不好,所以为了提高用户体验,我们需要对这种冲突进行解决。

解决办法:

根据滑动距离来决定滑动方向。

源码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class ScrollViewForViewPager extends ScrollView {

private GestureDetector mGestureDetector;

public ScrollViewForViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
mGestureDetector = new GestureDetector(context, new YScrollDetector());
}

@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
return super.onInterceptTouchEvent(ev) & mGestureDetector.onTouchEvent(ev);
}

private class YScrollDetector extends GestureDetector.SimpleOnGestureListener {
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
return Math.abs(distanceY) > Math.abs(distanceX);
}
}
}
,