在某个方向上禁止Viewpage滑动

5

我该如何使viewpager只能单向滚动?例如,只允许向右滑动,而不允许向左滑动。我完全卡住了,任何帮助都将不胜感激。需要注意的是,我需要使其在Android版本2.2上工作,因此我正在使用ViewPager的兼容库。

先行致谢。

1个回答

7
你需要自己创建一个扩展原本ViewPager的ViewPager,并重写onTouchEvent方法。
public class CustomViewPager extends ViewPager {

    float lastX = 0;

    boolean lockScroll = false;

    public CustomViewPager(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public CustomViewPager(Context context) {
        super(context);
    }

    @Override
    public boolean onTouchEvent(MotionEvent ev) {

        switch (ev.getAction()) {
        case MotionEvent.ACTION_DOWN:
            lastX = ev.getX();
            lockScroll = false;
            return super.onTouchEvent(ev);
        case MotionEvent.ACTION_MOVE:

            if (lastX > ev.getX()) {
                lockScroll = false;
            } else {
                lockScroll = true;
            }

            lastX = ev.getX();
            break;
        }

        lastX = ev.getX();

        if(lockScroll) {
            return false;
        } else {
            return super.onTouchEvent(ev);
        }

    }



}

嗨,阿里 - 不幸的是,这不起作用。我甚至尝试了onTouchEvent事件,但是很遗憾,没有成功。 - Barry Steyn
另一个技巧是,当您滚动到下一个视图时,删除第一个视图。几分钟后我会更新。 - Ali Alnoaimi
1
非常有bug,特别是如果有偏移量的话。 - jbenowitz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接