Android - Невозможно изменить цвет текста панели действий - PullRequest
0 голосов
/ 03 мая 2020

Я пытаюсь применить собственный стиль к панели действий темы материала. Ничего особенного, просто простое изменение цвета текста заголовка, однако я не могу изменить цвет вообще. Я настроил тему и тему приложения следующим образом: 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. Увы - не повезло.

Как я могу изменить это? Возможно, я неправильно понимаю, как работают материальные компоненты?

1 Ответ

0 голосов
/ 03 мая 2020

Я не уверен, что это сработает, но попробуйте этот код один раз:

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...