我刚刚将Android Studio更新到最新版本。此更新随支持设计库版本23.2.0
一起提供我在我的应用程序中使用带有图标的TabLayout(将Drawable转换为SpannableString),它与支持设计库版本23.1.1配合使用,但不适用于版本23.2.0。
有关此问题的任何想法吗?
答案 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);
...
}