我正在使用带有 ViewPager
的 TabLayout
,我想知道如何最有效地更改 TabLayout 中选定选项卡的图标颜色。
Google 的 Youtube 应用是如何实现的完美引用。在主页上,有四个深灰色的图标。选择特定选项卡时,该选项卡的图标变为白色。
没有任何第三方库,如何才能达到同样的效果?
一种可能的解决方案显然是使用选择器。但在这种情况下,我必须同时找到白色和灰色版本的图标,然后在选项卡被选中或取消选中时切换图标.我想知道是否有更有效的方法可以突出显示图标颜色或其他内容。我在任何教程中都找不到这个。
编辑
我上面直接提到的解决方案需要为每个选项卡的图标使用两个可绘制对象。我想知道是否有一种方法可以通过 ONE 为每个选项卡的图标绘制。
最佳答案
我找到了一种简单的方法。
viewPager = (ViewPager) findViewById(R.id.viewpager);
setupViewPager(viewPager);
tabLayout = (TabLayout) findViewById(R.id.tabs);
tabLayout.setupWithViewPager(viewPager);
tabLayout.setOnTabSelectedListener(
new TabLayout.ViewPagerOnTabSelectedListener(viewPager) {
@Override
public void onTabSelected(TabLayout.Tab tab) {
super.onTabSelected(tab);
int tabIconColor = ContextCompat.getColor(context, R.color.tabSelectedIconColor);
tab.getIcon().setColorFilter(tabIconColor, PorterDuff.Mode.SRC_IN);
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
super.onTabUnselected(tab);
int tabIconColor = ContextCompat.getColor(context, R.color.tabUnselectedIconColor);
tab.getIcon().setColorFilter(tabIconColor, PorterDuff.Mode.SRC_IN);
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
super.onTabReselected(tab);
}
}
);
关于java - 如何更改 TabLayout 选定选项卡的图标颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34562117/