使用选择器为TabLayout设置tabSelectedTextColor

Ali*_*eza 3 android android-selector

以下代码可以正常工作,因为我tabSelectedTextColor直接添加了该属性,并且选定的文本颜色将为白色。

<android.support.design.widget.TabLayout
            ...
            app:tabSelectedTextColor="@color/white"
            app:tabTextColor="@color/tab_layout"/>
Run Code Online (Sandbox Code Playgroud)

但是下面的代码不起作用,我也不知道为什么,也许这是一个错误!

<android.support.design.widget.TabLayout
            ...
            app:tabTextColor="@color/tab_layout"/>
Run Code Online (Sandbox Code Playgroud)

@ 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>
Run Code Online (Sandbox Code Playgroud)

注意: #CCFFFFFF color有效,这意味着视图可以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);
}
Run Code Online (Sandbox Code Playgroud)

Ami*_*ava 5

如果要更改选定的文本颜色,请使用TabLayout类的setTabTextColors方法,如下所示:

tabLayout.setTabTextColors(Color.parseColor("#ADABAE"), Color.parseColor("#FFFFFF"));
Run Code Online (Sandbox Code Playgroud)