Подтвердить что ты не робот

Изменение цвета текста заголовка ActionBar с использованием темы Light.DarkActionBar в AppCompat 21

Я использую библиотеку v7 appcompat 21, чтобы использовать новые стили материалов на устройствах pre-Lollipop. Мой styles.xml выглядит так:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="android:textColorPrimary">#ff0000</item>
    <item name="android:textColorPrimaryInverse">#ff0000</item>
</style>

Я пытаюсь изменить цвет текста на панели действий. Но независимо от того, что я написал для textColorPrimary или textColorPrimaryInverse, цвет всегда белый. Если я наследую от Theme.AppCompat, я могу переопределить "textColorPrimary", и если я наследую от Theme.AppCompat.Light, я могу переопределить "textColorPrimaryInverse". Но ни одна из них не работает при использовании темы Light.DarkActionBar.

Я определенно использую AppTheme, потому что настройка атрибутов, таких как colorPrimary для изменения цвета фона панели действий, прекрасна. Я не использую никаких других файлов стиля классификатора ресурсов.

Я вырыл файлы стилей android и не могу понять, какой атрибут переопределить. Есть идеи? Это ошибка appcompat?

4b9b3361

Ответ 1

Вы можете изменить его с помощью атрибута actionBarStyle темы.

<style name="AppBaseTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar">
    <item name="actionBarStyle">@style/MyActionBar</item>
</style>

<style name="MyActionBar" parent="@style/Widget.AppCompat.ActionBar.Solid">
    <item name="titleTextStyle">@style/MyTitleTextStyle</item>
</style>

<style name="MyTitleTextStyle" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title">
    <item name="android:textColor">CHANGE_COLOR_HERE</item>
</style>

Ответ 2

Это сделает ваш заголовок панели инструментов белым цветом:

<android.support.v7.widget.Toolbar
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/toolbar"
    android:layout_height="wrap_content"
    android:layout_width="match_parent"
    app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
    android:minHeight="?attr/actionBarSize"
    android:background="?attr/colorPrimary" />

Чтобы понять, в чем разница между ThemeOverlay.AppCompat.Dark.ActionBar и Theme.AppCompat.Light.DarkActionBar проверить этот ответ

Он app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar", который применяет светлый цвет, потому что цвет заголовка, который используется в этой теме белый.

Ответ 3

убедитесь, что вы внесете изменения во все ваши папки значений, например "values-v11", "values-v14" и т.д., если они существуют.

Else убедитесь, что в приложении используется тот же самый "AppTheme", который вы показали выше.

Пожалуйста, напишите полный текст style.xml и код манифеста, ссылаясь на стиль, который даст больше информации о вашей проблеме.

Также вы можете попробовать установить атрибуты app: theme и app: popupTheme на панели инструментов ToolBar.

Ответ 4

Попробуйте добавить это в onCreate своей деятельности. Работает практически на всех версиях Android.

Для java Activity:

 actionBar.setTitle(Html.fromHtml("<font color='#ffff00'>Your Title</font>"));  

Для фрагментов:

getSupportActionBar().setTitle(Html.fromHtml("<font color='#ffff00'>Your Title</font>"));

Ответ 5

Я использовал сгенерированный XML файл макета и не заметил, что атрибут android:theme был переопределен.

Вы проверили?:)

Ответ 6

Попробуйте следующее:

<item name="actionMenuTextColor">@color/red</item>