TabLayout一般不报错还没效果,那就先检查下面这几项是否使用了。。。
在大佬这借个效果图https://blog.csdn.net/Bu_siliang/article/details/80506070
/**
* 先找控件
*/
//添加标题
String tabs = new String[]{"tab1,tab2,tab3,tab4,tab5,tab6"};
for (int i = 0; i < tabs.length; i++) {
//循环添加标签
tabLayout.addTab(tabLayout.newTab().setText(tabs[i]));
//循环创建fragment
fragments.add(ChildFragment.newInstance(i));
}
//适配器
MainPagerAdapter adapter = new MainPagerAdapter(getChildFragmentManager(), tabs, fragments);
pager.setAdapter(adapter);
//tablayout关联Viewpager
tabLayout.setupWithViewPager(pager);
//静态工厂
public static MainFragment newInstance(int index) {
MainFragment mainFragment = new MainFragment();
Bundle args = new Bundle();
args.putInt("index", index);
mainFragment.setArguments(args);
return mainFragment;
}
Step:适配器写法:
在适配器里面就是集成FragmentPageAdapter,切记传入getSupportFragmentManager();因为我的是继承父类
Fragment所以要拿到他的子类,要自主重写 getPageTitle(int position)方法,不然不展示标题;
public class MainPagerAdapter extends FragmentPagerAdapter {
private String[] tabs;
private ArrayList fragments;
public MainPagerAdapter(FragmentManager childFragmentManager, String[] tabs, ArrayList fragments) {
super(childFragmentManager);
this.tabs = tabs;
this.fragments = fragments;
}
/**
* 获取每一个Fragment的页面
* @param i
* @return
*/
@Override
public Fragment getItem(int i) {
return fragments.get(i);
}
/**
* 标签数量-->也就是ViewPager内的Fragment页数
*
* @return
*/
@Override
public int getCount() {
return fragments.size();
}
/**
* 内置代码:获取每一个标签页--->赋值
*
* @param position
* @return
*/
@Nullable
@Override
public CharSequence getPageTitle(int position) {
return tabs[position];
}
}