以下是我的主要活动的布局文件:
<android.support.design.widget.TabLayout
android:id="@+id/tabLayout"
android:layout_width="0dp"
android:layout_height="39dp"
android:layout_marginEnd="16dp"
android:layout_marginTop="8dp"
app:layout_constraintEnd_toStartOf="@+id/settingsButton"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<android.support.design.widget.TabItem
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:icon="@drawable/ic_mic_black_36dp" />
<android.support.design.widget.TabItem
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:icon="@drawable/ic_folder_black_36dp" />
</android.support.design.widget.TabLayout>
如果除了运行包含上述内容的代码之外什么都不做,TabItem会显示图标,但是当我将TabLayout设置为FragmentPageAdapter时,图标会消失,留下空白。
以下是我的FragmentPageAdpater:
public class ViewPagerFragmentAdapter extends FragmentPagerAdapter
{
private final List<Fragment> mFragmentList = new ArrayList<>();
public ViewPagerFragmentAdapter(FragmentManager manager)
{
super(manager);
}
@Override
public Fragment getItem(int position)
{
return mFragmentList.get(position);
}
@Override
public int getCount()
{
return mFragmentList.size();
}
public void addFragment(Fragment fragment)
{
mFragmentList.add(fragment);
}
}
为什么当我去 tabLayout.setupWithViewPager(viewPager); 这些图标现在消失了?我只显示图标而不是文字。只添加了2个片段,因此只显示了2个空白标签。
答案 0 :(得分:0)
TabLayout.setupWithViewPager()
最终将致电TabLayout.populateFromPagerAdapter()
,TabLayout.removeAllTabs()
将致电ViewPager
。之后,它将使用for (int i = 0; i < adapterCount; i++) {
addTab(newTab().setText(mPagerAdapter.getPageTitle(i)), false);
}
页面标题创建新标签:
<TabItem>
因此,布局中的{{1}}标签会被丢弃并替换。
答案 1 :(得分:0)
作为解决方案,我决定将以下内容添加到我的主要活动中onCreate()
tabLayout.setupWithViewPager(viewPager);
tabLayout.getTabAt(0).setIcon(R.drawable.ic_mic_black_36dp);
tabLayout.getTabAt(1).setIcon(R.drawable.ic_folder_black_36dp);
最后两行将图标添加到我的空白标签中。必须在setupWithViewPager调用之后应用它们。