как сделать мой viewpager салфетки справа налево

У меня есть viewpager, и он содержит некоторую информацию, но он позволяет мне красть страницы слева направо, как я могу сделать его красть слева направо, что означает изменение его направления?

8 ответов


Я думаю, вы можете установить текущую страницу на последнюю страницу, используя viewPager.setCurrentItem(). Затем он будет размах слева направо .. :)


вы можете провести в обоих направлениях уже. По умолчанию он показывает нулевую страницу, но вы можете изменить это:

protected void onCreate(Bundle savedInstanceState) {
    // ...
    viewPager.setCurrentItem(myFragmentCount-1); 
    // ...

Это очень простой метод, чтобы изменить направление прокрутки в Viewpager.

есть два простых шага, которые должны следовать за вами,

1. изменение поворота пейджера просмотра,

viewpager.setRotationY (180);

2. затем снова измените направление контейнера фрагментов, который является дочерним элементом viewpager,

recyclerView.setRotationY (180);

Примечание: In моем случае, я использую recyclerview как дитя пейджер.

Это 100% работало для меня.


Я уверен, что это не относится к op, но я нашел решение, которое сработало для меня (поскольку изменение данных было проблемой для моего случая). Я просто повернул viewpager на 180 градусов по оси Y, а затем снова повернул его подвиды на 180.

android.view.View

public void setRotationY(float rotationY)

надеюсь, это помогло кому-нибудь, так как я думаю, что это наиболее близко к тому, как Android отражает все ОС при переходе на язык rtl.


вы можете сделать что-то подобное,

ViewPager.setCurrentItem(lastposition);

сначала нужно реализовать OnPageChangeListener в вашем классе и второй установите слушателя на свой viewpager, как viewpager.setOnPageChangeListener (ваш класс.этот); Надеюсь, это сработает.


мое решение. динамически:

public class RTLViewPager extends ViewPager {

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

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

    @Override
    public void setAdapter(PagerAdapter adapter) {
        super.setAdapter(adapter);
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
            if(getResources().getConfiguration().getLayoutDirection() == View.LAYOUT_DIRECTION_RTL){
                setCurrentItem(adapter.getCount()-1);
            }
        }
    }
}

чтобы ваш горизонтальный ViewPager вел себя как RecyclerView при изменении LayoutDirection просто добавьте этот метод в свой пользовательский ViewPager;

public class LoopViewPager extends ViewPager {
....
...
    public void setLayoutDirection(int layoutDirection) {
        if(layoutDirection == ViewCompat.LAYOUT_DIRECTION_LTR) {
            setRotationY(0);
        }
        else if(layoutDirection == ViewCompat.LAYOUT_DIRECTION_RTL) {
            setRotationY(180);
    }
}

и где вы используете ваш viewPager установить его динамически, как это:

viewPager.setLayoutDirection(context.getResources().getConfiguration().getLayoutDirection());