我们知道TabLayout+ViewPager可以实现多界面切换,一般我们会用下面的这种实现方式。
TabViewPagerAdapter viewPagerAdapter = new TabViewPagerAdapter(getChildFragmentManager());
for (String title : titles) {
viewPagerAdapter.addTitles(title);
}
viewPagerAdapter.addFragment(new TestOneFragment());
viewPagerAdapter.addFragment(new TestTwoFragment());
viewPagerAdapter.addFragment(new TestThreeFragment());
viewPagerAdapter.addFragment(new TestFourFragment());
mVp_Fragment.setOffscreenPageLimit(4);
mVp_Fragment.setAdapter(viewPagerAdapter);
mVp_Fragment.setPageTransformer(true, MyTransformer.getMyTransformer(TransType.OVERLAP));
mTbl_Fragment.setupWithViewPager(mVp_Fragment);
但是比如你想从第一个界面点击第四Tab切换到第四个界面的时候,会出现有第二、第三界面的过程动画。这是ViewPager默认的切换方式,这时候如果你不想要这种效果,可以使用ViewPager.setCurrentItem(position,false);方法传入false来禁止这种动画效果。但是上面的方法是用关联的方式,无法使用setCurrentItem这个方法。
想要继续使用setCurrentItem方法可以使用TabLayout点击事件的方式来实现,代码如下:
mTbl_Fragment.addTab(mTbl_Title.newTab().setText(titles[0]));
mTbl_Fragment.addTab(mTbl_Title.newTab().setText(titles[1]));
mTbl_Fragment.addTab(mTbl_Title.newTab().setText(titles[2]));
mTbl_Fragment.addTab(mTbl_Title.newTab().setText(titles[3]));
mTbl_Fragment.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
switch (tab.getPosition()){
case 0:
mVp_Fragment.setCurrentItem(tab.getPosition(),false);
break;
case 1:
mVp_Fragment.setCurrentItem(tab.getPosition(),false);
break;
case 2:
mVp_Fragment.setCurrentItem(tab.getPosition(),false);
break;
case 3:
mVp_Fragment.setCurrentItem(tab.getPosition(),false);
break;
}
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
MyViewPagerAdapter viewPagerAdapter = new MyViewPagerAdapter(getChildFragmentManager());
viewPagerAdapter.addFragment(new TestOneFragment());
viewPagerAdapter.addFragment(new TestTwoFragment());
viewPagerAdapter.addFragment(new TestThreeFragment());
viewPagerAdapter.addFragment(new TestFourFragment());
mVp_Fragment.setCurrentItem(0);
mVp_Fragment.setOffscreenPageLimit(4);
mVp_Fragment.setAdapter(viewPagerAdapter);
mVp_Fragment.setScroll(false);