как сделать мой 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.
сначала нужно реализовать 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());