Просмотр страницы перестанет прокручиваться в определенном направлении

Как я могу остановить прокрутку viewpager только в одном направлении. Например, разрешить свайпы только вправо, но не влево. Я абсолютно застрял, любая помощь будет принята с благодарностью. Чтобы отметить, что мне нужно, чтобы это работало для Android версии 2.2, поэтому я использую библиотеку совместимости для ViewPager.

заранее спасибо


person Barry Steyn    schedule 01.09.2012    source источник


Ответы (1)


Вам нужно будет создать свой собственный 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);
        }

    }



}
person Ali Alnoaimi    schedule 01.09.2012
comment
Привет Али - к сожалению, это не работает. Пробовал даже событие onTouchEvent, но увы, без радости. - person Barry Steyn; 01.09.2012
comment
Еще один трюк, когда вы переходите к следующему виду, удалите первый. Я обновлю через несколько минут. - person Ali Alnoaimi; 01.09.2012
comment
супер глючит, особенно если есть смещения. - person jbenowitz; 03.05.2013