TabLayout不显示带有android支持库23.2.0的图标

时间:2016-02-25 11:00:10

标签: android android-support-library

我刚刚将Android Studio更新到最新版本。此更新随支持设计库版本23.2.0

一起提供

我在我的应用程序中使用带有图标的TabLayout(将Drawable转换为SpannableString),它与支持设计库版本23.1.1配合使用,但不适用于版本23.2.0。

有关此问题的任何想法吗?

3 个答案:

答案 0 :(得分:0)

如果要覆盖使用TabLayout并覆盖addTab(Tab),则覆盖

public void addTab(Tab tab, boolean setSelected)

public void addTab(Tab tab, int position, boolean setSelected)

从实现中你可以看到,这两个方法没有链接,所以你的代码只会调用一次,具体取决于框架使用的方法。

看起来版本23.2.0从直接调用addTab(Tab)变为addTab(Tab tab,boolean setSelected)

答案 1 :(得分:0)

这是图标的答案:

mTabLayout.setupWithViewPager(mViewPager);
// and then:
for (int i = 0; i < tabLayout.getTabCount(); i++) {
     tabLayout.getTabAt(i).setIcon(R.drawable.btn_add_card);
}

在这里找到: Tablayout with icons only

答案 2 :(得分:0)

更新到Android支持库23.2.0及更高版本到23.3.0后,我遇到了同样的问题。

在没有找到任何答案的情况下谷歌搜索后,我终于自己解决了这个问题。我的解决方案是在每次调用notifyDataSetChanged()之后直接更新图标(可能你需要更多地方),如下所示:

mSectionsPagerAdapter.notifyDataSetChanged();
mTabLayout.getTabAt(0).setIcon(R.drawable.tab_0_icon);
mTabLayout.getTabAt(1).setIcon(R.drawable.tab_1_icon);
mTabLayout.getTabAt(2).setIcon(R.drawable.tab_2_icon);
mTabLayout.getTabAt(3).setIcon(R.drawable.tab_3_icon);

上面使用的成员在活动的onCreate()中设置如下:

...

private SectionsPagerAdapter mSectionsPagerAdapter;
private ViewPager mViewPager;
private TabLayout mTabLayout;

...

@Override
protected void onCreate(Bundle savedInstanceState) {

    ...

    mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());

    // Set up the ViewPager with the sections adapter.
    mViewPager = (ViewPager) findViewById(R.id.container);
    mViewPager.setAdapter(mSectionsPagerAdapter);

    mTabLayout = (TabLayout) findViewById(R.id.tabs);
    mTabLayout.setupWithViewPager(mViewPager);

    mTabLayout.getTabAt(0).setIcon(R.drawable.tab_0_icon).select();
    mTabLayout.getTabAt(1).setIcon(R.drawable.tab_1_icon);
    mTabLayout.getTabAt(2).setIcon(R.drawable.tab_2_icon);
    mTabLayout.getTabAt(3).setIcon(R.drawable.tab_3_icon);

    ...
}