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

Поддержка ActionBar не отображает правильный цвет с API 21

Я пытаюсь создать тему appcompat, но цвет не работает, и значок не будет отображаться... возможно, что-то не хватает. Вот мой xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <!-- the theme applied to the application or activity -->
    <color name="background_test">#410000</color>
    <color name="font_general">#ffffff</color>
    <style name="MyTheme"
        parent="@style/Theme.AppCompat">
        <item name="android:actionBarStyle">@style/MyActionBar</item>
        <!-- Support library compatibility -->
        <item name="actionBarStyle">@style/MyActionBar</item>

    </style>
    <style name="AudioFileInfoOverlayText">
        <item name="android:paddingLeft">2dp</item>
        <item name="android:paddingBottom">2dp</item>
        <item name="android:textColor">#ffffffff</item>
        <item name="android:textSize">18sp</item>
        <item name="android:shadowColor">#000000</item>
        <item name="android:shadowDx">1</item>
        <item name="android:shadowDy">1</item>
        <item name="android:shadowRadius">1</item>
    </style>

    <!-- general styles for the action bar -->
    <style name="MyActionBar"
        parent="@style/Widget.AppCompat.Light.ActionBar.Solid">
        <item name="android:icon">@drawable/ic_launcher</item>
        <item name="icon">@drawable/ic_launcher</item>
        <item name="background">@color/background_test</item>
        <item name="android:background">@color/background_test</item>
  </style>

</resources>

Что я должен добавить, чтобы заставить его работать?

EDIT:

Он не будет работать с панелью инструментов... После того, как я установил:

    Toolbar toolbar = (Toolbar) findViewById(R.id.my_awesome_toolbar);
    setSupportActionBar(toolbar);

Он потеряет всю определенную пользователем тему и получит только родительскую тему... Вот мои xmls (Да, у меня много избыточных/тестовых значений, поскольку я хотел попробовать все)

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

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools" xmlns:android="http://schemas.android.com/apk/res/android">

    <!-- the theme applied to the application or activity -->
    <color name="background_test">#410000</color>
    <color name="font_general">#ffffff</color>
    <!-- general styles for the action bar -->
    <style name="CustomActionBarTheme" parent="@style/Theme.AppCompat.Light.NoActionBar">
        <item name="actionBarStyle">@style/MyActionBarStyle</item>
        <item name="android:panelColorBackground">@color/background_test</item>
        <item name="android:headerBackground">@color/background_test</item>
        <item name="android:colorBackground">@color/background_test</item>
        <item name="android:backgroundSplit">@color/background_test</item>

        <item name="backgroundSplit">@color/background_test</item>
        <item name="colorAccent">@color/background_test</item>

        <!-- Here we setting appcompat’s actionBarStyle -->


        <!-- ...and here we setting appcompat’s color theming attrs -->
        <item name="colorPrimary">@color/background_test</item>
        <item name="colorPrimaryDark">@color/background_test</item>
    </style>

    <style name="MyActionBarStyle">
        <item name="colorAccent">@color/background_test</item>

        <!-- Here we setting appcompat’s actionBarStyle -->
        <item name="android:panelColorBackground">@color/background_test</item>
        <item name="android:headerBackground">@color/background_test</item>
        <item name="android:colorBackground">@color/background_test</item>
        <item name="android:backgroundSplit">@color/background_test</item>

        <item name="backgroundSplit">@color/background_test</item>

        <!-- ...and here we setting appcompat’s color theming attrs -->
        <item name="colorPrimary">@color/background_test</item>
        <item name="colorPrimaryDark">@color/background_test</item>
        <item name="android:background">@color/background_test</item>

        <item name="background">@color/background_test</item>
    </style>

    <style name="AudioFileInfoOverlayText">
        <item name="android:paddingLeft">2dp</item>
        <item name="android:paddingBottom">2dp</item>
        <item name="android:textColor">#ffffffff</item>
        <item name="android:textSize">18sp</item>
        <item name="android:shadowColor">#000000</item>
        <item name="android:shadowDx">1</item>
        <item name="android:shadowDy">1</item>
        <item name="android:shadowRadius">1</item>
    </style>



</resources>

Скриншот:

http://i.imgur.com/4iohVwP.png

Новый EDIT: Он также не будет работать с кодом...

    Toolbar toolbar = (Toolbar) findViewById(R.id.my_awesome_toolbar);
    setSupportActionBar(toolbar);
    ActionBar test=getSupportActionBar();

    test.setLogo(R.drawable.ic_launcher); //this is the only one working...
    test.setBackgroundDrawable(new ColorDrawable(0x410000));

    test.setDisplayShowTitleEnabled(false);
    test.setDisplayShowTitleEnabled(true);

EDIT:

Для нового Appcompat-v7 есть некоторые ошибки, это, вероятно, ошибка:

http://code.google.com/p/android/issues/detail?id=77763&colspec=ID%20Type%20Status%20Owner%20Summary%20Stars
4b9b3361

Ответ 1

Если вы используете Toolbar, то ваш actionBarStyle используется не.

Вам нужно просто настроить панель инструментов:

<android.support.v7.widget.Toolbar
    android:layout_height="wrap_content"
    android:layout_width="match_parent"
    android:minHeight="..."
    android:background="..."
    app:theme="@style/ThemeOverlay.AppCompat.ActionBar"
    app:titleTextAppearance="..."
    app:subtitleTextAppearance="..." />

Есть больше атрибутов, которые вы можете настроить, это просто примеры.

Я не уверен, почему getSupportActionBar().setBackgroundDrawable(...) не работает для вас, я просто пробовал его в разных местах, и он отлично работает.

Ответ 2

Это пример:

<style name="Theme.MyTheme" parent="Theme.AppCompat.Light">  
    <!-- colorPrimary is used for the default action bar background -->
    <item name="colorPrimary">@color/my_color</item>

    <!-- colorPrimaryDark is used for the status bar -->
    <item name="colorPrimaryDark">@color/my_darker_color</item>

    <!-- colorAccent is used as the default value for colorControlActivated
         which is used to tint widgets -->
    <item name="colorAccent">@color/accent</item>

    <!-- appcompat’s actionBarStyle -->
   <item name="actionBarStyle">@style/MyActionBarStyle</item>

</style>  

Также я предлагаю вам использовать новый Toolbar.

Вы можете найти более подробную информацию здесь:

https://chris.banes.me/2014/10/17/appcompat-v21/

Ответ 3

Одно из решений, позволяющее AppCompatActivity использовать основной цвет темы на панели действий для всех уровней api - объявить цвета в та же тема:

<style name="Theme.Custom" parent="Theme.AppCompat">

      <!--API < 21 -->
      <item name="colorPrimary">@color/colorPrimary</item>
      <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
      <item name="colorAccent">@color/colorAccent</item>

      <item name="colorButtonNormal">@color/colorButtonNormal</item>

      <!-- 21 < API this is probably not needed, included for illustration -->
      <item name="android:colorPrimary" tools:ignore="NewApi">@color/colorPrimary</item>
      <item name="android:colorPrimaryDark" tools:ignore="NewApi">@color/colorPrimaryDark</item>
      <item name="android:colorAccent" tools:ignore="NewApi">@color/colorAccent</item>

      <item name="android:colorButtonNormal" tools:ignore="NewApi">@color/colorButtonNormal</item>

 </style>

Примечание: не забудьте удалить тему, объявленную в значениях-v21, чтобы это работало