片段中的Android TabLayout,文本缺失

时间:2015-09-07 01:43:26

标签: android-tablayout

我在一个片段中编写了一个布局,在初始化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);

2 个答案:

答案 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]);
    }