在Android设计库TabLayout中,当选中时更改图标和标题的颜色

6

我正在使用设计库的TabLayout,我想要实现的是:

我想要实现的

我尝试了很多教程,并通过自定义选项卡来实现它,但是当选项卡被选择时会出现限制,我想要更改文本颜色以及图标的图像,但迄今为止我所阅读的任何教程都无法实现。我已经尝试通过在FragmentStatePagerAdapter中添加以下内容来解决这个问题。

public View getTabView(int position) {
    View tab = LayoutInflater.from(mContext).inflate(R.layout.tabbar_view, null);
    TextView tabText = (TextView) tab.findViewById(R.id.tabText);
    ImageView tabImage = (ImageView) tab.findViewById(R.id.tabImage);
    tabText.setText(mFragmentTitles.get(position));
    tabImage.setBackgroundResource(mFragmentIcons.get(position));
    if (position == 0) {
        tab.setSelected(true);
    }
    return tab;
}

在该方法中保留tabTexttabImage视图的数组或列表,当选择/取消选择选项卡时,您可以更改它们上面的任何内容。 - Mike M.
如果您想检查,我可以发布代码,我可以使用Tab Activity更改图标。 - Rajan Bhavsar
@MikeM,我会尝试你的方法。 - Vishwajit Palankar
@RajanBhavsar 我想在设计库中使用 TabLayout - Vishwajit Palankar
1
请查看以下链接以帮助解决您的问题: https://dev59.com/aY_ea4cB1Zd3GeqPMEQZ - Rajan Bhavsar
@VishwajitPalankar,这个问题有解决方案吗?我也遇到了同样的问题。 - Muhammad Waleed
1个回答

2
设计库已更新以匹配材料设计“带有图标和文本的选项卡”规范,因此您不需要自定义选项卡视图。
但是在当前版本(23.1.1)中,只有文本颜色与规范匹配(选项卡聚焦 - #fff,选项卡未聚焦 - 70%#fff)。因此,您可以使用由getTabTextColors()返回的ColorStateList来使用DrawableCompat.setTintList(ColorStateList)对图标进行着色。
尝试使用此代码片段https://gist.github.com/mikovali/7a89b505cd6306bb94a8。删除行tabs.setTabTextColors(Color.RED, Color.GREEN)就足以在深色工具栏上匹配文本和图标规范。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接