2015-02-18 3 views
5

Я пытаюсь убрать панель инструментов appcompat-v7, чтобы иметь другой цвет фона для моего меню переполнения. Я попытался использовать темы для своих приложений и стилей для моей панели инструментов, но я не смог этого достичь.Стиль appcompat-v7 Фон меню панели инструментов

Это моя панель инструментов:

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

Вот стиль, который я создал:

<style name="AppToolbarTheme" parent="Theme.AppCompat.NoActionBar"> 
     <item name="android:textColorPrimary">@color/white</item> 
     <item name="android:textColorSecondary">@color/cian</item> 
    </style> 

Моя главная тема расширения Theme.AppCompat.Light.

Кто-нибудь знает, как я могу это сделать? Если невозможно использовать стили, есть ли другой способ его достижения?

+0

Установите этот флажок вопрос [HTTP://переполнение стека.ком/вопросы/26699482/стайлинг-The-всплывающее меню-в-андроида-5-0] [1] [1]: http://stackoverflow.com/questions/26699482/styling-the -popup-menu-in-android-5-0 – Semanticer

ответ

32

Добавьте это в панели инструментов элемента

app:popupTheme="@style/ThemeOverlay.YourPopup" 

Затем в styles.xml определить всплывающее меню стиля

<style name="ThemeOverlay.YourPopup" parent="ThemeOverlay.AppCompat.Light"> 
    <item name="android:colorBackground">@color/mtrl_white_100</item> 
    <item name="android:textColor">@color/mtrl_light_blue_900</item> 
</style> 

<style name="ThemeOverlay.YourPopup" parent="ThemeOverlay.AppCompat.Light"> 
    <item name="android:colorBackground">@color/mtrl_white_100</item> 
    <item name="android:textColorPrimary">@color/mtrl_light_blue_900</item> 
</style> 

Обратите внимание, что вам необходимо использовать android:colorBackground и никогда android:background. Последний будет применяться ко всему, у которого нет фона (здесь само меню и каждый пункт меню), первое относится только к всплывающему меню.

Обновление: То же самое касается textColorPrimary и textColor.

  • Всплывающее меню пункт android:textColor="?android:textColorPrimary".
  • android:textColorPrimary является тема атрибут, он определяется по темам.
  • android:textColorстиль атрибут, он определяется на виджетах.
  • Если мы определили android:textColor в теме, это применимо к каждому виджету, который не определяет свой собственный android:textColor.
+0

Спасибо @ eugen-pechanec, он хорошо работал для моего меню! – viniciusmr3

+0

Это не сработало для меня, но [this] (https://stackoverflow.com/questions/26554996/change-toolbar-color-in-appcompat-21). – Android

+0

@ Android Я сделал ошибку, спасибо, что заметила, теперь она должна работать. –

1

При использовании атрибутов AppCompat вы не используете пространство имен android. Измените код следующим образом:

<style name="AppToolbarTheme" parent="Theme.AppCompat.NoActionBar"> 
     <item name="textColorPrimary">@color/white</item> 
     <item name="textColorSecondary">@color/cian</item> 
</style> 
+0

Это работало на цвет моих значков на панели инструментов. Благодаря! – viniciusmr3

+0

Ресурс не найден, который соответствует данному имени: attr 'textColorPrimary'. – dr4cul4

+0

@ dr4cul4 найти как этот ' @ color/white' –

0

Добавить это на панель инструментов в вашем файле activity.xml: -

app:popupTheme="@style/ThemeOverlay.YourApp" 

И тогда в вашей styles.xml добавить следующее: -

<style name="ThemeOverlay.YourApp" parent="ThemeOverlay.AppCompat.Light"> 
     <item name="android:colorBackground">@android:color/darker_gray</item> 
     <item name="android:textColorPrimary">@color/TextColorPrimary</item> 
    </style> 
Смежные вопросы