android – TabLayout:为每个选项卡设置自定义颜色

我看到很多问题说明如何为选定(活动)和未选中(非活动)选项卡设置不同的颜色.我也知道google提供了void setTabTextColors(int normalColor,int selectedColor)来实现这一点.

我的要求有点不同,我正在使用TabLayout和CardView进行测验应用程序. TabLayout允许用户在问题之间导航,CardView用于显示问题.

我需要设置用户已选择答案的选项卡的颜色与用户尚未应答的选项卡的颜色不同.默认情况下,TextColor是黑色的,但如果用户选择了答案,那么tabcolor应该变为蓝色(仅适用于例如.)并且它应该保持这种状态直到用户退出.我有一个名为Select的int数组,它将保存用户选择的选项的值(值范围在1到4之间).在分配Select数组时,我也用-1初始化它.我想到了设置一个循环,然后如果数组为-1,则保留选项卡原样或将tabcolor设置为蓝色.

我该如何实现此功能?

最佳答案
您可以通过查询此子项并手动更改TextView来使用TabLayout内部.当您升级到另一个支持库版本时,这可能会破坏您的代码,但只要您在更新时进行跟踪和测试,它就应该工作:

private void updateTabTextColors() {
    LinearLayout tabsContainer = (LinearLayout) mTabLayout.getChildAt(0);
    for (int i = 0; i < mTabLayout.getTabCount(); i++) {
        LinearLayout item = (LinearLayout) tabsContainer.getChildAt(i);
        TextView tv = (TextView) item.getChildAt(1);
        tv.setTextColor(Select[i] == -1 ? Color.BLACK : Color.BLUE);
    }
}

转载注明原文:android – TabLayout:为每个选项卡设置自定义颜色 - 代码日志