Android更改ViewPager的默认方向滑动 [英] Android change default direction swipe of ViewPager
问题描述
默认情况下,ViewPager
滑动方向是从左到右,以查看带有内容的其他选项卡,现在我想将此方向从右到左更改.
by default ViewPager
swipe direction is left to right to view other tabs with content, now i like to change this direction to right to left.
我的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;
}
}
推荐答案
来自
一个月前我遇到了同样的问题,但我认为我发现了一个很棒的问题
解决方案.
I faced the same problem month ago but I think I found a great
solution. 1)将xml中的TabLayout方向更改为ltr: 1) Change your TabLayout direction to ltr in xml: 2)为ViewPager创建自定义适配器并覆盖方法
getItem(int position)和getPageTitle(int position): 2) Create custom adapter for ViewPager and override methods
getItem(int position) and getPageTitle(int position): 3)将适配器设置为ViewPager,然后将此ViewPager应用于
TabLayout. 3) Set the adapter to ViewPager and then apply this ViewPager to
TabLayout. 4)我创建了一个博客文章,其中包含更多详细信息和完整代码-
此处 4) I created a blog post which contains more details and full code -
here 这篇关于Android更改ViewPager的默认方向滑动的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
<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" />
@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();
}
}
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);
}