CAB Überlaufmenü Custom Style

8

In meiner Anwendung zeige ich eine Kontext-Aktionsleiste und weil ich keinen Platz für alle Aktionen habe, werden einige von ihnen unter der Überlauf-Menü-Taste aufgerufen. Jetzt möchte ich das Überlaufmenü gestalten und seinen Hintergrund ändern. Mein Thema erbt von Theme.AppCompat und ich habe diese Stile definiert:

%Vor%

Die anderen Menüs in meiner Anwendung (Überlaufmenüs in der Aktionsleiste und andere) werden formatiert, aber das Überlaufmenü der kontextabhängigen Aktionsleiste ist nicht. Was soll ich machen?

    
Sandra 17.12.2014, 11:00
quelle

3 Antworten

2

Ich habe endlich eine Lösung. Es scheint, dass Sie dies zu Ihrem Thema hinzufügen müssen:

%Vor%

Wo:

%Vor%

Das colorBackground-Attribut kann einen beliebigen Farbwert annehmen, und Sie haben damit das Überlaufmenü der kontextabhängigen Aktionsschaltfläche gestaltet.

    
Sandra 14.01.2015, 15:46
quelle
2

Um den Hintergrund des Überlaufmenüs zu ändern, müssen Sie das Attribut actionOverflowMenuStyle :

überschreiben %Vor%

Drawable bg_cab_popup kann beliebig gezeichnet werden. Aber die Verwendung eines 9-Patch macht Sinn.

Wenn Sie etwas anderes als den Hintergrund ändern müssen, hinterlassen Sie mir bitte einen Kommentar.

    
Vikram 25.12.2014 16:39
quelle
0

Ich gehe davon aus, dass Sie die neueste (21.x.x) appcompat-v7-Bibliothek verwenden und das neue Widget Toolbar adpoted haben. Um zu erreichen, was Sie wollen, ändern Sie nicht Ihr Haupt-App-Thema (außer für den Textauswahl-Aktionsmodus), sondern wenden Sie einen Stil auf das Toolbar -Element in Ihrem Layout an ( style="@style/Widget.YourApp.Toolbar" ). Die Stildefinition sieht möglicherweise ähnlich aus:

%Vor%

Für das, was Sie erreichen möchten, ist popupTheme das wichtigste Attribut. Es zeigt auf eine andere Stildefinition, die das Aussehen des Popup-Menüs der Werkzeugleiste beschreibt.

%Vor%

Wichtig: Beachten Sie, dass Sie dies als Thema nicht als Stil verwenden. Wenn Sie einen Stil anwenden, werden die Attribute nur für das eine Layoutelement festgelegt, unter dem Sie es angeben. Wenn Sie ein Thema anwenden, werden die Attribute an alle untergeordneten Elemente weitergegeben. Aus diesem Grund überschreiben Sie niemals background (was zu Überziehungen und unerwünschtem Aussehen führen würde) zugunsten von spezifischeren Attributen wie windowBackground oder colorBackground (die nur für das relevante oberste Element gelten).

Um dieses Beispiel vollständig zu machen, füge ich auch ein Symbolleisten-Thema hinzu:

%Vor%

Merken: Wenn Sie benutzerdefinierte Textfarben verwenden, verwenden Sie einen Selektor und definieren Sie auch die deaktivierte Farbe (doppelt, wenn Sie die Farbe für eine Schaltfläche oder ein Menü verwenden).

>

BEARBEITEN

Es wird gesagt, dass die obige Lösung nicht auf das Kontext-Aktionsfeld oder den Aktionsmodus-Popup angewendet werden soll. Ich habe herausgefunden, dass es durch das folgende Attribut gesteuert wird, das im Aktivitätsthema definiert ist:

%Vor%

Der Standardwert verweist auf @style/Widget.PopupMenu , der wie folgt definiert ist:

%Vor%

Erstellen Sie einen benutzerdefinierten Stil basierend auf Widget.PopupWindow und zeigen Sie darauf von actionModePopupWindowStyle .

    
Eugen Pechanec 31.12.2014 20:15
quelle