根据特定条件滑动viewPager

时间:2018-07-29 07:37:55

标签: android android-viewpager swipe

我有一个viewPager,可滑动5个或更多页面。一些页面包含表单输入字段。根据输入值,可以启用或禁用滑动。 例如:如果页面包含复选框,并且必须选中此字段。如果仅选中该选项,则滑动应该可以,否则将停留在同一页面上。

1 个答案:

答案 0 :(得分:1)

您可以扩展viewpager类以创建自定义viewpager实现。在该类中,您需要根据需要返回“ true”或“ false”来覆盖“ canScrollHorizo​​ntally”方法

    public class LockableViewPager extends ViewPager {

        private boolean swipeLocked;

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

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

        public boolean getSwipeLocked() {
            return swipeLocked;
        }

        public void setSwipeLocked(boolean swipeLocked) {
            this.swipeLocked = swipeLocked;
        }

        @Override
        public boolean onTouchEvent(MotionEvent event) {
            return !swipeLocked && super.onTouchEvent(event);
        }

        @Override
        public boolean onInterceptTouchEvent(MotionEvent event) {
            return !swipeLocked && super.onInterceptTouchEvent(event);
        }

        @Override
        public boolean canScrollHorizontally(int direction) {
            //control this method based on your logic
            return !swipeLocked && super.canScrollHorizontally(direction);
        }

    }