使用选择器设置TabLayout的选中文本颜色

3

以下代码有效是因为我直接添加了tabSelectedTextColor属性,选择的文本颜色将会是白色。

<android.support.design.widget.TabLayout
            ...
            app:tabSelectedTextColor="@color/white"
            app:tabTextColor="@color/tab_layout"/>

但是以下代码不起作用,我不知道为什么,可能是个bug!

<android.support.design.widget.TabLayout
            ...
            app:tabTextColor="@color/tab_layout"/>

@color/tab_layout

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- Selected state defined so it's better to use it -->
    <item android:color="@color/white" android:state_selected="true"/>
    <item android:color="@color/white" android:state_focused="true"/>
    <item android:color="@color/white" android:state_pressed="true"/>
    <item android:color="#CCFFFFFF"/>
</selector>

注意: #CCFFFFFF 颜色可以使用,这意味着视图正确获取了tabTextColor属性的值,但无法识别android:state_selected项。我测试了所有合理的状态,但都没有起作用。

TabLayout.class

下面的代码是从TabLayout.class中复制的,一切都很清楚。你不认为从选择器中获取选定文本颜色是更好的方式吗?如果是,请报告一下。

if(a.hasValue(styleable.TabLayout_tabSelectedTextColor)) {
    int selected = a.getColor(styleable.TabLayout_tabSelectedTextColor, 0);
    this.mTabTextColors = createColorStateList(this.mTabTextColors.getDefaultColor(), selected);
}
1个回答

6
如果您想要更改所选文本的颜色,则可以使用TabLayout类的setTabTextColors方法,如下所示:
tabLayout.setTabTextColors(Color.parseColor("#ADABAE"), Color.parseColor("#FFFFFF"));

这与 app:tabSelectedTextColor = "" 相同,这是问题的作者展示为有效的。请参阅 https://developer.android.com/reference/android/support/design/widget/TabLayout.html#setTabTextColors(int, int)。 - FilipR

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