2015-03-17 17 views
13

Ich benutze die Symbolleiste für Android. Ich möchte nur die Hintergrundfarbe des Überlaufmenüs ändern. Aber es ändert sich nicht.Symbolleiste Optionen Menü Hintergrundfarbe

Stil xml

<style name="MyDarkToolbarStyle" parent="Widget.AppCompat.Toolbar"> 
    <item name="popupTheme">@style/PopupMenuStyle</item> 
    <item name="theme">@style/ThemeOverlay.AppCompat.Dark.ActionBar</item> 
</style> 

<style name="PopupMenuStyle" parent="android:Widget.Holo.Light.PopupMenu"> 
    <item name="android:popupBackground">@android:color/white</item> 
</style> 

Toolbar XML

<android.support.v7.widget.Toolbar 
    android:id="@+id/tool_bar" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="@color/ColorPrimary" 
    android:elevation="2dp" 
    android:theme="@style/MyDarkToolbarStyle" /> 

Antwort

64

Um die Symbolleiste Optionenmenü Farbe zu ändern, fügen Sie diese zu Ihrer Symbolleiste Element

app:popupTheme="@style/MyDarkToolbarStyle" 

Dann in Ihrem styles.xml dem Popup-Menü Stil definieren

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

Beachten Sie, dass Sie colorBackgroundnichtbackground verwenden müssen. Letzteres würde auf alles angewendet werden (das Menü selbst und jeden Menüpunkt), der erstere gilt nur für das Popup-Menü.

+4

Dies ist so schlecht gestaltet. Danke .. – milosmns

+0

Ich denke, die popupTheme Eigenschaft funktioniert nur auf API 21 und bis – CapitanNerd

+0

Das hat nicht für mich funktioniert, aber [diese] (https://stackoverflow.com/questions/26554996/change-toolbar-color-in- appcompat-21) tat. – Android

10

Edit:

, wenn Sie nur ein weißer Überlauf Popup-Menü wollen diese gerade tun

<android.support.v7.widget.Toolbar 
    android:id="@+id/tool_bar" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="@color/ColorPrimary" 
    android:elevation="2dp" 
    app:theme="@style/MyDarkToolbarStyle" 
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light"" /> 

und entfernen Sie die redundant popupTheme your Style xml

<style name="MyDarkToolbarStyle" parent="Widget.AppCompat.Toolbar"> 
    <item name="theme">@style/ThemeOverlay.AppCompat.Dark.ActionBar</item> 
</style> 

Sie sollten auch diese sind in der oberen (Eltern) Layout

xmlns:app="http://schemas.android.com/apk/res-auto" 
+2

Nein, die Symbolleiste stammt aus der Support-Bibliothek und ist abwärtskompatibel – Kuffs

2

einfachste Weg

Wenn Sie nur ein weißes Überlauf Popup-Menü wollen dies nur tun:

<android.support.v7.widget.Toolbar 
    android:id="@+id/tool_bar" 
    android:layout_width="match_parent" 
    android:layout_height="?attr/actionBarSize" 
    android:background="@color/ColorPrimary" 
    android:elevation="2dp" 
    app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" 
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light" /> 

Werfen Sie auch einen Blick auf dem Wert von android:layout_height Attribute.

+1

funktioniert wie Charme. Danke! –

Verwandte Themen