我知道这个问题不止一次被问过,但我想我正在寻找另一种“跳过”。
与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页面?提前谢谢。
答案 0 :(得分:0)
如果你想跳过两个片段并直接转到第四个片段,那么写下面一行
ViewPager.setCurrentItem(3);
答案 1 :(得分:0)
我认为,你应该像下面那样创建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(adapter) 最后,您可以将tablayout与您的viewpager连接,如下所示
tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
viewPager.setCurrentItem(tab.getPosition());
}