Stellen Sie die Hintergrundfarbe des Menüelements bei Hover in Android ein

8

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 :

%Vor%

Menü_item.xml

%Vor%     
Tom11 26.09.2016, 18:50
quelle

2 Antworten

2

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.

Hier sind einige Hinweise

%Vor%

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.

%Vor%

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.

%Vor%

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.

%Vor%

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.

    
Eugen Pechanec 04.10.2016, 21:00
quelle
4

@ 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:

  1. Ändern Sie android:background="?attr/colorPrimary" in android:background="@color/material_dark_blue" mit der Hintergrundfarbe Ihrer Aktionsleiste in der oberen Werkzeugleiste.

  2. 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.

    
Prati 04.10.2016 09:55
quelle