Изменение цвета фона панели действий с помощью AppCompat
Я нашел несколько вопросов об этой проблеме в Интернете. К сожалению, все, что я пытаюсь сделать до сих пор, не увенчалось успехом.
Говорит ли название, мне нужно изменить цвет фона моей панели действий.
В проекте есть min sdk из 9 и max sdk из 19.
Я создал в моей папке res/values, xml файл:
red_actionbar.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="CustomActionBarTheme" parent="@style/Theme.AppCompat.Light">
<item name="actionBarStyle">@style/MyActionBar</item>
</style>
<style name="MyActionBar"
parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
<item name="background">@color/red</item>
</style>
</resources>
colors.xml, сохраненный в res/values
<resources>
<color name="red">#FF0000</color>
</resources>
и часть манифеста, где я меняю тему
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/CustomActionBarTheme" >
Но ничего не меняется. В чем проблема? Приложение принимает код, потому что если я меняю ths:
<style name="CustomActionBarTheme" parent="@style/Theme.AppCompat.Light">
к
<style name="CustomActionBarTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar ">
он меняет тему моего приложения, поэтому проблема в стиле, но я не знаю, как ее решить.
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="CustomActionBarTheme" parent="@style/Theme.AppCompat.Light">
<item name="android:actionBarStyle" tools:ignore="NewApi">@style/MyActionBar</item>
<item name="actionBarStyle">@style/MyActionBar</item>
</style>
<style name="MyActionBar"
parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
<item name="android:background" tools:ignore="NewApi">@color/red</item>
<item name="background">@color/red</item>
</style>
</resources>
Ответы
Ответ 1
<style name="MyActionBar" parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
<item name="android:background" tools:ignore="NewApi">@color/red</item>
<item name="background">@color/red</item>
</style>
<style name="CustomActionBarTheme" parent="@style/Theme.AppCompat.Light">
<item name="android:actionBarStyle" tools:ignore="NewApi">@style/MyActionBar</item>
<item name="actionBarStyle">@style/MyActionBar</item>
</style>
вам нужны элементы android:background
и background
. Первый - для более новых версий android, которые поддерживают ActionBar изначально. Последнее относится к более старым версиям Android.
ИЗМЕНИТЬ
вместо <resources>
используйте
<resources xmlns:tools="http://schemas.android.com/tools" xmlns:android="http://schemas.android.com/apk/res/android">
Из SDK 21
чтобы изменить цвет фона панели действий, добавьте это в ActionBarTheme, и два цвета должны быть разными или работать не будут (спасибо @Dre
и @lagoman
)
<item name="colorPrimary">@color/my_awesome_red</item>
<item name="colorPrimaryDark">@color/my_awesome_darker_red</item>
Ответ 2
Попробуйте следующее:
<style name="CustomActionBarTheme" parent="@style/Theme.AppCompat.Light">
<item name="android:actionBarStyle">@style/MyActionBar</item>
<item name="actionBarStyle">@style/MyActionBar</item>
</style>
<style name="MyActionBar" parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
<item name="android:background">@color/red</item>
<item name="background">@color/red</item>
</style>
Ответ 3
Попробуйте это.
<style name="AppBaseTheme" parent="Theme.AppCompat.Light">
<item name="colorPrimary"> #6699FF </item>
</style>
Вы можете изменить цвет #6699FF
в соответствии с вашим выбором (или использовать ресурс цвета).
Ответ 4
попробуйте использовать
parent="Theme.AppCompat.Light"
вместо
parent="@style/Theme.AppCompat.Light"