Изменение цвета текста заголовка 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?
Ответы
Ответ 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>