Android ActionBar background colors.xml не работает

Я новичок в Android-разработке. А я слежу за обучением на developer.android.com. Но у меня сейчас проблема с изменением цвета фона панели действий. у меня ошибка

Description Resource    Path    Location    Type
error: Error: No resource found that matches the given name (at 'android:background' with value '@colors/orange').  styles.xml  /ActionBarColor/res/values  line 17 Android AAPT Problem

когда я ссылаюсь на res/values/colors.xml из моего res/values/styles.xml

цвета.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name ="orange">#FF8800</color>
</resources>

стили.xml

<resources xmlns:android="http://schemas.android.com/apk/res/android">

    <!--
        Base application theme, dependent on API level. This theme is replaced
        by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
    -->
    <style name="AppBaseTheme" parent="Theme.AppCompat.Light">
        <!--
            Theme customizations available in newer API levels can go in
            res/values-vXX/styles.xml, while customizations related to
            backward-compatibility can go here.
        -->
        <item name="actionBarStyle">@style/myActionBar</item>
    </style>

    <style name = "myActionBar" parent = "Widget.AppCompat.Light.Base.ActionBar.Solid.Inverse">
        <item name ="android:background">@colors/orange</item> <!--Error Here-->
    </style>

    <!-- Application theme. -->
    <style name="AppTheme" parent="AppBaseTheme">
        <!-- All customizations that are NOT specific to a particular API-level can go here. -->
    </style>

</resources>

Прочитал почти все ветки по этому поводу, но не нашел подсказки. Насколько я могу судить, мой код выглядит точно так же, как и другие. Помогите пожалуйста мне. Цель проекта — API19, минимальная версия — API11.

добавил themes.xml, как говорится на сайте, ошибка остается

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <!-- the theme applied to the application or activity -->
    <style name="CustomActionBarTheme"
           parent="@style/Theme.AppCompat.Light.DarkActionBar">
        <item name="android:actionBarStyle">@style/MyActionBar</item>

        <!-- Support library compatibility -->
        <item name="actionBarStyle">@style/MyActionBar</item>
    </style>

    <!-- ActionBar styles -->
    <style name="MyActionBar"
           parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">

        <item name="android:background">@colors/orange</item>

        <!-- Support library compatibility -->
        <item name="background">@colors/orange</item>
    </style>
</resources>

person Bolun Zhang    schedule 04.06.2014    source источник


Ответы (1)


Как я вижу, вы используете библиотеку AppCompat в своем проекте Android, поэтому вам следует использовать ресурсы AppCompat только для создания тем. Прямо со страниц обучения Android, посвященных стилю панели действий, в раздел "Настройка фона":

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <!-- the theme applied to the application or activity -->
    <style name="CustomActionBarTheme"
           parent="@style/Theme.AppCompat.Light.DarkActionBar">
        <item name="android:actionBarStyle">@style/MyActionBar</item>

        <!-- Support library compatibility -->
        <item name="actionBarStyle">@style/MyActionBar</item>
    </style>

    <!-- ActionBar styles -->
    <style name="MyActionBar"
           parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
        <item name="android:background">@drawable/actionbar_background</item>

        <!-- Support library compatibility -->
        <item name="background">@drawable/actionbar_background</item>
    </style>
</resources>

Затем примените тему ко всему приложению или к отдельным действиям:

<application android:theme="@style/CustomActionBarTheme" ... />
  1. Создайте стиль для панели действий на основе любых существующих тем AppCompat и определите элемент background (для приложений appcompat) — MyActionBar в приведенном выше примере.
  2. Создайте стиль, который будет использоваться вашим проектом, который применяет ранее созданный стиль панели действий, и определите элемент actionBarStyle (для приложений, совместимых с приложениями) — CustomActionBarTheme в приведенном выше примере.

Вы действительно хотели бы прочитать страницы обучения Android, они довольно хорошо объяснены; а также у вас есть Руководства по Android API и Справочные страницы Android API.

person arielnmz    schedule 04.06.2014
comment
Спасибо за подробный ответ. Но здесь я пытался просто изменить цвет фона вместо того, чтобы установить фон на какое-то изображение в доступном для рисования каталоге. Я предполагаю, что мой вопрос в том, почему мой colors.xml не подлежит ссылке. Вы говорите, что если я использую appcompat_v7, то я не могу ссылаться на colors.xml в своем собственном пакете проекта? - person Bolun Zhang; 04.06.2014
comment
Конечно, вы можете заменить ресурс drawable на ресурс color. - person arielnmz; 04.06.2014
comment
Я добавил themes.xml, как указано на веб-сайте, и использовал именно тот код, за исключением замены @drawable/actionbar_background на @colors/orange. Ошибка остается. Смотрите мой отредактированный вопрос - person Bolun Zhang; 04.06.2014
comment
Пробовали ли вы восстановить свой проект? (Проект › Очистить...). Вы также можете попробовать указать шестнадцатеричный цвет напрямую вместо ресурса. - person arielnmz; 04.06.2014
comment
Оказывается, я неправильно понял @blablabla как имя файла xml. Поэтому я использовал @colors/orange вместо @color/orange, потому что думал, что мой оранжевый элемент находится в colors.xml. Нубское недоразумение, но никто не указал на это, лол. Спасибо - person Bolun Zhang; 05.06.2014