在 ViewPager + TabLayout 中跳过页面
Skip pages in ViewPager + TabLayout
我知道这个问题已经被问过不止一次了,但我想我正在寻找另一种 "skip"。
在 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 设置动画。我想做的是字面上 "skip" 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());
}
我知道这个问题已经被问过不止一次了,但我想我正在寻找另一种 "skip"。
在 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 设置动画。我想做的是字面上 "skip" 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());
}