默认情况下ViewPager
滑动方向从左到右查看包含内容的其他标签,现在我想将此方向更改为从右到左。
我的FragmentPagerAdapter
课程:
public static class MyPagerAdapter extends FragmentPagerAdapter {
private static int NUM_ITEMS = 3;
public MyPagerAdapter(FragmentManager fragmentManager) {
super(fragmentManager);
}
// Returns total number of pages
@Override
public int getCount() {
return NUM_ITEMS;
}
// Returns the fragment to display for that page
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
return MainCategoryListFragment.newInstance(2);
case 1:
return ChildFragment.newInstance(1);
case 2:
return ParentFragment.newInstance(0);
default:
return null;
}
}
// Returns the page title for the top indicator
@Override
public CharSequence getPageTitle(int position) {
String title = "";
switch (position){
case 0:
title = "one";
break;
case 1:
title = "two";
break;
case 2:
title = "tree";
break;
}
return title;
}
}
答案 0 :(得分:0)
ViewPager.setCurrentItem(int pageIndex,boolean isSmoothScroll);
pageIndex是总页数。通过这样做,用户将被迫从右向左滑动。
答案 1 :(得分:0)
我在一个月前遇到了同样的问题,但我觉得我发现了一个很棒的问题 解。
1)将您的TabLayout方向更改为xml中的ltr:
<android.support.design.widget.TabLayout android:id="@+id/tl_activity_main" android:layout_below="@id/toolbar_activity_main" android:layoutDirection="ltr" android:layout_width="match_parent" android:layout_height="wrap_content" style="@style/DisionTabLayout" />
2)为ViewPager创建自定义适配器并覆盖方法 getItem(int position)和getPageTitle(int position):
@Override public Fragment getItem(int position) { if (mIsRtlOrientation && mTabs != null && mTabs.length > 0) { return mTabs[mTabs.length - position - 1].getFragment(); } else { return mTabs[position].getFragment(); } } @Override public int getCount() { return mTabs.length; } @Override public CharSequence getPageTitle(int position) { if (mIsRtlOrientation && mTabs != null && mTabs.length > 0) { return mTabs[mTabs.length - position - 1].getTitle(); } else { return mTabs[position].getTitle(); } }
3)将适配器设置为ViewPager,然后将此ViewPager应用于 TabLayout。
private void setAdapters() { // initialize adapter mTabsAdapter = new TabsAdapter(getSupportFragmentManager(), mTabs, true); // set adapter to ViewPager vp.setAdapter(mTabsAdapter); // set ViewPager to TabLayout tl.setupWithViewPager(vp); // if RTL orientation, go to last item vp.setCurrentItem(vp.getAdapter().getCount() - 1, false); }
4)我创建了一篇博文,其中包含更多详细信息和完整代码 - here