如何锁定 ViewPager 一次只允许单页滑动

How to lock ViewPager to allow only a single page swipe at once

默认情况下,当您滑过 ViewPager 时,您可以滑过尽可能多的页面,直到手指到达屏幕末端。那么,是否可以强制ViewPager无论用户滑动多少都只允许改变一页?

这就是我在寻呼机上滑动直到手指到达屏幕末端的意思:

这就是我将 ViewPager 锁定为一次只允许滑动一个页面的意思:

谢谢。

好的,我认为答案是:扩展 ViewPager 并覆盖 onTouchEvent(MotionEvent ev)

private Rect viewRect = new Rect();

@Override
public boolean onTouchEvent(MotionEvent event) {

    getHitRect(viewRect);

    if (viewRect.contains(
        Math.round(view.getX() + event.getX()),
        Math.round(view.getY() + event.getY()))) {

        // touch is inside, do normal behavior
        return super.onTouchEvent(event);
    } else {
        // touch is outside, consume the event & do nothing
        return true;
    }
}

很遗憾,现在没有时间真正测试它,我稍后会更新。

最后还是在adapter里面做了。我所做的是在 getCount 方法中返回 2,在选择后重新排列项目,并特别处理使用当前位置(0 或 1)访问数据集中的项目的情况。