Android更改ViewPager的默认方向滑动 [英] Android change default direction swipe of ViewPager

查看:206
本文介绍了Android更改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中的T​​abLayout方向更改为ltr:

1) Change your TabLayout direction to ltr in xml:

<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):

2) Create custom adapter for ViewPager and override methods getItem(int position) and 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.

3) Set the adapter to ViewPager and then apply this ViewPager to 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)我创建了一个博客文章,其中包含更多详细信息和完整代码- 此处

4) I created a blog post which contains more details and full code - here

这篇关于Android更改ViewPager的默认方向滑动的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆