Android - 无法更改操作栏文本颜色

问题描述 投票:0回答:1

我想给素材主题动作栏套上一个自定义样式。没有什么花哨的东西,只是简单的改变标题文字的颜色,但是我根本无法改变颜色。我已经设置了一个主题,一个应用程序主题,如下所示,在主题xml中。

<resources>

    <style name="AppTheme" parent="Base.AppTheme">
        <item name="android:navigationBarColor">?android:attr/colorPrimaryDark</item>
        <item name="actionBarStyle">@style/AppBarLayout</item>
    </style>

    <style name="Base.AppTheme" parent="Theme.MaterialComponents.DayNight">
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryVariant">@color/colorPrimaryDark</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorSecondary">@color/colorSecondary</item>
        <item name="colorSecondaryVariant">@color/colorSecondaryDark</item>
        <item name="colorOnPrimary">@color/colorTextLight</item>
        <item name="colorOnSecondary">@color/colorTextDark</item>
        <item name="colorError">@color/colorError</item>
    </style>

</resources>

引用的动作栏样式在样式xml中定义为:

<style name="AppBarLayout" parent="Widget.AppCompat.ActionBar">
    <item name="background">?attr/colorPrimaryDark</item>
    <item name="titleTextStyle">@style/AppBarText</item>
</style>

titleTextStyle所引用的样式也在样式xml中定义为:

<style name="AppBarText" parent="ThemeOverlay.AppCompat.Dark.ActionBar">
    <item name="android:textColor">@color/colorError</item>
</style>

我试过后一种风格的其他属性,比如:

<item name="android:titleTextStyle">@color/colorError</item>
<item name="titleTextStyle">@color/colorError</item>
<item name="colorOnPrimary">@color/colorError</item>
<item name="android:textColorPrimary">@color/colorError</item>

我也试过将AppBarText风格与其他属性一起应用到titleTextStyle中,比如android:textAppearance。唉--没戏。

我怎么才能让它改变呢?也许我误解了Material组件的工作方式?

android android-studio android-layout material-design android-theme
1个回答
0
投票

我不知道这是否会奏效,但可以试试这段代码。

int labelColor = getResources().getColor(R.color.label_color);
String сolorString = String.format("%X", labelColor).substring(2); // !!strip alpha value!!

Html.fromHtml(String.format("<font color=\"#%s\">text</font>", сolorString), TextView.BufferType.SPANNABLE); 

getSupportActionBar().setTitle(colorString);
© www.soinside.com 2019 - 2024. All rights reserved.