在ViewPager + TabLayout中跳过页面

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在ViewPager + TabLayout中跳过页面相关的知识,希望对你有一定的参考价值。

我知道这个问题不止一次被问过,但我想我正在寻找一种不同的“跳过”。

在与ViewPager相关联的TabLayout中:

ViewPager vp = (ViewPager) findViewById(...);
TabLayout tl = (TabLayout) findViewById(...);
vp.setAdapter(new NoSwipePagerAdapter());
tl.setupWithViewPager(vp);

由于viewpager不可滚动,因此预期的行为如下:如果点击“A”选项卡,viewpager将滚动到该选项卡。

我的问题是,如果我在“A”并点击“D”,则viewpager通过B和C进行动画制作。我要做的是逐字“跳过”B和C并显示D.

主要是出于性能问题,因为B和C都是沉重的碎片,但也是为了设计问题。

我尝试了setCurrentItem(int index, boolean smoothScroll)的每一个组合,但它没有用。

是否可以跳过ViewPager页面?提前致谢。

答案

如果你想跳过两个片段并直接转到第四个片段,那么写下面一行

ViewPager.setCurrentItem(3);
另一答案

我想,你应该像下面一样创建PagerAdapter

public class PagerAdapter extends FragmentStatePagerAdapter {
int mNumOfTabs;

public PagerAdapter(FragmentManager fm, int NumOfTabs) {
    super(fm);
    this.mNumOfTabs = NumOfTabs;
}

@Override
public Fragment getItem(int position) {

    Fragment fragment = null;
    switch (position) {
        case 0:
            fragment = new Fragment_PatientList();

            break;
        case 1:
            fragment = new FragmentB();
            break;
        case 2:
            fragment = new FragmentC();
            break;
        default:
            return null;
    }
    return fragment;
}

@Override
public int getCount() {
    return mNumOfTabs;
}

}

创建pagerAdapter后,设置viewPager.setAdapter(适配器)最后,您可以将tablayout与viewpager连接,如下所示

 tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
        @Override
        public void onTabSelected(TabLayout.Tab tab) {
            viewPager.setCurrentItem(tab.getPosition());
        }

以上是关于在ViewPager + TabLayout中跳过页面的主要内容,如果未能解决你的问题,请参考以下文章

tablayout+viewpager怎么设置取消滑动

如何使用 tabLayout 在 ViewPager 中显示片段?

TabLayout +ViewPager 自定义Tab的UI

TabLayout+ViewPager制作简单导航栏

viewpager tablayout 中间可以添加view吗

不使用 ViewPager 的 TabLayout