ViewPager проведите пальцем по определенному условию

У меня есть viewPager, который пролистывает 5 или более страниц. Некоторые страницы содержат поля ввода формы. В зависимости от введенного значения прокрутка может быть включена или отключена. Например: если на странице есть чекбокс, и это обязательное поле, которое нужно отметить. Если этот флажок установлен, смахивание должно работать, в противном случае оно останется на той же странице.

0
0
284
1

Ответы 1

Вы можете расширить класс viewpager, чтобы создать собственную реализацию viewpager. В этом классе вам нужно переопределить метод canScrollHorizontally в соответствии с вашими потребностями, чтобы вернуть true или false.

    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);
        }

    }

Не могли бы вы привести пример вызова этого метода в действии?

SPR 29.07.2018 10:12

Другие вопросы по теме