TabLayout关联ViewPager后不显示文字的解决方法

当使用addTab()方法给tablayout动态添加文字时可能会出现不显示标题文字的问题,而真实情况并不是不显示文字,而是ViewPager又给TabLayout加了许多空的标题,导致之前手动添加的标题被挤到后面,不信你多往后翻一翻是不是就出来了。那么这些空的标题是如何产生的呢,通过分析TabLayout源码很快就查出这个问题,其中有个方法的代码是这样的:

private void populateFromPagerAdapter() {
  removeAllTabs();

  if (mPagerAdapter != null) {
   final int adapterCount = mPagerAdapter.getCount();
   for (int i = 0; i < adapterCount; i++) {
     addTab(newTab().setText(mPagerAdapter.getPageTitle(i)), false);
   }

   // Make sure we reflect the currently set ViewPager item
   if (mViewPager != null && adapterCount > 0) {
    final int curItem = mViewPager.getCurrentItem();
    if (curItem != getSelectedTabPosition() && curItem < getTabCount()) {
     selectTab(getTabAt(curItem));
    }
   }
  } else {
   removeAllTabs();
  }
 }

我们注意看这一行:

for (int i = 0; i < adapterCount; i++) {
        addTab(newTab().setText(mPagerAdapter.getPageTitle(i)), false);
      }

恍然大悟了吧,可以看到在TabLayout里面调用了PageAdapter的方法来添加标题,而添加标题的个数就是在PageAdapter的getCount()方法中设置的,标题的文字是在PageAdapter的getPageTitle()方法中设置。
到此,解决方法就出来了:不要为ViewPager手动使用addTab方法添加标题,而应先创建一个list,将其设置在PageAdapter的getPageTitle方法中,代码如下:

@Override
  public CharSequence getPageTitle(int position) {
    return list_title.get(position);
  }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:notice#nhooo.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。