在做项目时,遇到一个问题,有时候在tabLayout.setupWithViewPager(viewPager)
前设置标题到后来可能就变成空白的,不显示Tab的title,解决了很久都不行。
结果研究,有两种方法来解决问题:
- 在
tabLayout.setupWithViewPager(viewPager)
手动重新添加标题,这里不再赘述; - 重写adapter中的
getPageTitle
adapter
public class TabAdapter extends FragmentPagerAdapter {
private ArrayList<Fragment> fragments;
//传入titleList用以重写标题
private ArrayList<String> mTitles;
public TabAdapter(FragmentManager fm, ArrayList<Fragment> fragments, ArrayList<String> titles) {
super(fm);
this.fragments = fragments;
mTitles = titles;
}
//重点:重写标题
@Override
public CharSequence getPageTitle(int position) {
return mTitles.get(position);
}
@Override
public Fragment getItem(int position) {
return fragments.get(position);
}
@Override
public int getCount() {
return fragments.size();
}
}
实现页面中的主要方法
private void initTabView() {
viewPager = view.findViewById(R.id.data_count_viewpager);
tabLayout = view.findViewById(R.id.tab_layout);
tabAdapter = new TabAdapter(getActivity().getSupportFragmentManager(), mFragments, mTitles);
//添加Tab
for (int i = 0; i < mTitles.size(); i++) {
tabLayout.addTab(tabLayout.newTab().setText(mTitles.get(i)));
}
//关联tabAdapter和ViewPager
viewPager.setAdapter(tabAdapter);
//关联ViewPager和TabLayout
tabLayout.setupWithViewPager(viewPager);
}