无法更改TabLayout上的活动文本颜色

10

我正在尝试样式化android.support.design.widget.TabLayout中的选项卡,但无法改变所选标签的颜色,它总是设置为我的应用程序主题中的textColorPrimary颜色,但我需要它们是不同的颜色。

我已经尝试在styles.xml中设置适用于TabLayout的值,但我读到不能通过这种方式更改活动选项卡文本颜色,尽管我可以更改未选中选项卡的文本颜色。我还尝试了:

tabLayout.setTabTextColors(getResources().getColorStateList(R.color.selector));

并且
tabLayout.setTabTextColors(R.color.Green, R.color.Blue);

是否有可能覆盖所选标签的文本颜色?


这个答案就是你要找的。 - murt
3个回答

14

实际上,您可以通过定义自定义TabLayout样式来自定义活动选项卡文本颜色。查看tabSelectedTextColor参数。以下是自定义tabSelectedTextColortabIndicatorColortabTextAppearance(文本大小/颜色等)的示例:

<android.support.design.widget.TabLayout
    android:id="@+id/tabLayout"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    style="@style/CustomTabLayoutStyle"/>

样式:

<style name="CustomTabLayoutStyle" parent="Base.Widget.Design.TabLayout">
    <item name="tabSelectedTextColor">@color/tab_text_selected</item>
    <item name="tabIndicatorColor">@color/tab_indicator</item>
    <item name="tabTextAppearance">@style/CustomTabTexStyle</item>
</style>

<style name="CustomTabTexStyle" parent="TextAppearance.Design.Tab">
    <item name="android:textSize">14sp</item>
    <item name="android:textColor">@color/tab_text</item>
    <item name="textAllCaps">false</item>
    ...
</style>

请注意,必须使用“style”而不是“android:theme”。 - tarrball

14

编辑:已经解决。

tabLayout.setTabTextColors(getResources().getColorStateList(R.color.selector));

需要在将其附加到视图翻页器之前调用


在支持设计库的 v23.0.1 版本中,这对你有效吗? - AllDayAmazing
我曾尝试在TabLayout xml中使用android:textColor="@color/tab_text_color_selector",但不得不使用您的方式,即design v23.1.1。不确定为什么会这样! :-/ 我会继续查看我的代码,但这个方法很有效。顺便说一下:getResources(...)没有被弃用。 - BK-

9

将以下代码添加到您的XML中:

app:tabSelectedTextColor="@color/app_color"

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