Ich habe Menüpunkte in meiner App, und ich möchte die Farbe des Gegenstandshintergrunds ändern, wenn darauf geklickt wird (siehe Screenshot - Punkt 1 wird angeklickt)
Ich möchte nur eine Farbe - entweder hellblau oder dunkel. Wie Sie jedoch sehen können, gibt es zwei davon auf dem ersten Element.
Hier ist mein Code:
Symbolleiste in Aktivität:
%Vor%Stile:
%Vor%Manifest:
%Vor%Jede Hilfe wird sehr geschätzt.
UPDATE:
Hinzufügen von CustomOverflowBack
:
Menü_item.xml
%Vor%Ersetzen Sie dies
%Vor%Damit:
%Vor%So verwenden Sie es:
%Vor%Dies reicht aus, um API 21 und höher zu unterstützen.
Ich habe Ihren toolbarButton
Stil weggelassen, weil er nicht mit dem Problem zusammenhängt.
Verwenden Sie keine Plattformstile für AppCompat-Widgets. Wenn Sie den AppCompat-Stil @style/Widget.AppCompat.ActionBar
verwendet haben, müssten Sie virtuell keine der Attribute überschreiben.
Hintergrund in einem Thema wird auf jede Ansicht angewendet, die es nicht überschreibt. Deshalb siehst du das blaue Quadrat. android:background
ist ein style -Attribut, verwende es für Widgets. android:colorBackground
ist ein Theme -Attribut und wird (unter anderem) verwendet, um die android:popupBackground
einzufärben, die die Form eines Popup-Menüs bietet.
Textfarbe ist wieder mehr ein Stilattribut, das in TextViews verwendet wird. Weit verbreitete Themenattribute sind android:textColorPrimary
und android:textColorSecondary
. Benutze diese stattdessen. android:textColor
in einem Thema kann zu unerwarteten / unerwünschten Ergebnissen führen.
Fügen Sie NOT eine Farbressource in ein Stil- / Textdarstellungsattribut ein. Es wird nicht funktionieren oder abstürzen oder schlimmere unerwartete Ergebnisse ohne Absturz erzeugen.
@ Tom11 müssen Sie einen benutzerdefinierten Stil für Ihr Popup-Overlay der Symbolleiste deklarieren.
Erstellen Sie einen Stil, der ThemeOverlay erweitert:
%Vor%Im obigen Stil ersetzen Sie @ color / colorPrimaryDark durch Ihre Hintergrundfarbe und @ color / colorAccent durch die ausgewählte Hintergrundfarbe.
Dann verwenden Sie es in Ihrer Toolbar Deklaration.
%Vor%Damit wird Ihr Problem behoben.
Aktualisierung: Nehmen Sie die folgenden Änderungen vor:
Ändern Sie android:background="?attr/colorPrimary"
in android:background="@color/material_dark_blue"
mit der Hintergrundfarbe Ihrer Aktionsleiste in der oberen Werkzeugleiste.
Entfernen Sie <item name="android:background">@color/material_dark_blue</item>
von Ihrem MyActionBar-Stil.
Der aktualisierte Code für die Symbolleiste und den MyActionBar-Stil wird folgen:
%Vor%Das sollte endlich funktionieren.
Tags und Links android design android-actionbar android-toolbar android-theme