我在一个片段中编写了一个布局,在初始化TabLayout和ViewPager以及tablayout.setupWithViewPager(viewpager)之后,发生了奇怪的问题...... TabLayout中的文本丢失了。 但是当我在一个Activity中定义它们时就可以了。 谷歌的一个错误?
// init with titles and fragments
adapter = new OrderFragmentAdapter(fragmentManager, titleList, fragments);
viewPager.setAdapter(adapter);
tabLayout.setTabTextColors(R.color.black_alpha_50, R.color.red_ec5740);
tabLayout.setBackgroundColor(getResources().getColor(android.R.color.transparent));
tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
tabLayout.setTabMode(TabLayout.MODE_FIXED);
tabLayout.setupWithViewPager(viewPager);
答案 0 :(得分:2)
这就是我在片段中初始化TabLayout并且工作正常的方法。并确保您使用的是最新版本的Design Support Library。
String[] categoryNames = getResources().getStringArray(R.array.categories_home);
TabPagerAdapter tabPagerAdapter = new TabPagerAdapter(getChildFragmentManager());
for (int i = 0; i < categoryNames.length; i++) {
tabPagerAdapter.addFragment(new HomeTabFragment(), categoryNames[i]);
}
viewPager.setAdapter(tabPagerAdapter);
tabLayout.setupWithViewPager(viewPager);
TabPagerAdapter
的代码:
public class TabPagerAdapter extends FragmentPagerAdapter {
private final List<Fragment> mFragments = new ArrayList<>();
private final List<String> mFragmentTitles = new ArrayList<>();
public TabPagerAdapter(FragmentManager fm) {
super(fm);
}
public void addFragment(Fragment fragment, String title) {
mFragments.add(fragment);
mFragmentTitles.add(title);
}
@Override
public Fragment getItem(int position) {
return mFragments.get(position);
}
@Override
public int getCount() {
return mFragments.size();
}
@Override
public CharSequence getPageTitle(int position) {
return mFragmentTitles.get(position);
}
}
答案 1 :(得分:2)
您好我也遇到了这个问题并找到了解决方案,
当你调用tablayout.setupWithViewPager()时,android api会自动预设你的寻呼机适配器的所有标题标题,所以你只需要在你的pagerAdapter中这样做就可以了!:
String[] title={...};
...
@Override
public CharSequence getPageTitle(int position) {
// return your title there
return getResources().getString(title[position]);
}