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

Изменение цвета фона панели действий с помощью 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>
4b9b3361

Ответ 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"