首页 文章

如何锁定ViewPager以仅允许一次单击一次

提问于
浏览
1

默认情况下,当您在ViewPager上滑动时,您可以滑动尽可能多的页面,直到手指到达屏幕的末尾 . 那么,无论用户刷了多少,是否可以强制ViewPager只允许一次页面更改?

这就是我的意思是在你的手指到达屏幕的末端时滑过寻呼机:
what I have

这就是我的意思是锁定ViewPager,一次只允许单个页面滑动:
this is what I want to achieve

谢谢 .

2 回答

  • 1

    好的,我认为答案是:扩展 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;
        }
    }
    

    不幸的是,现在没有时间真正测试它,我稍后会更新 .

  • 1

    最后,我最终在适配器中完成了它 . 我所做的是在 getCount 方法中返回 2 ,在选择后重新排列项目,并特别处理使用当前位置(0或1)访问数据集中的项目时的情况 .

相关问题