我在ViewPager中放置了一个Horizontal ScrollView。目标是仅使用软件触发的水平滚动视图。所有的滚动手势应该由ViewPager处理。
我已经通过创建自定义ViewPager来拦截所有的滑动手势来实现了这一点:
public class GreedyViewPager extends ViewPager {
GestureDetector mGestureDetector;
View.OnTouchListener mGestureListener;
public GreedyViewPager(Context context) {
super(context);
initGestureDetector(context);
}
public GreedyViewPager(Context context, AttributeSet attributeSet) {
super(context, attributeSet);
initGestureDetector(context);
}
void initGestureDetector(Context context){
mGestureDetector = new GestureDetector(context, new ScrollDetector());
ViewConfiguration vc = ViewConfiguration.get(context);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
return super.onInterceptTouchEvent(ev) || mGestureDetector.onTouchEvent(ev);
}
class ScrollDetector extends SimpleOnGestureListener {
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
return true;
}
@Override
public boolean onDoubleTap(MotionEvent e) {
return true;
}
}
}
很遗憾,它不能在所有设备上良好运行,有时我必须多次滑动才能进入ViewPager的下一个位置。
有什么办法可以让它更好吗?