2014-10-22 4 views
28

ContextAppCompat ToolBar popupTheme nicht in der ShareAction MenuItem

Verwenden des AppCompat v7 21.0.0/21.0.2/21.0.3

Problem

Die popupTheme der Symbolleiste verwendet wird nicht auf die ShareAction angewendet

Stil in der Symbolleiste:

<style name="MyActionBarStyle" parent="Widget.AppCompat.Toolbar"> 
    <item name="android:background">@color/green</item> 
    <item name="popupTheme">@style/ThemeOverlay.AppCompat.Light</item> 
    <item name="theme">@style/ThemeOverlay.AppCompat.Dark.ActionBar</item> 
</style> 

Der Überlauf Menüpunkt wird mit dem popupTheme richtig

Overflow Item

Die ShareAction auf der anderen Seite nicht die popupTheme erhalten. Nach einigen Tests ist mir aufgefallen, dass die App: theme der ToolBar also dunkel ist.

<item name="android:colorBackground">@color/white</item> 

ShareAction Menu Item

Um den schwarzen Text auf der ShareAction zu bekommen ich viele Attribute und durch Einstellung von „android: textColorPrimary“, versuchten Einstellung (auf dem ToolBar Thema) Ich bekomme, was ich will, aber dann meine Symbole auf der ToolBar nimmt auch diese Farbe, die seltsam ist ...

das Menü xml ist die folgende:

<?xml version="1.0" encoding="utf-8"?> 

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:cycle="http://schemas.android.com/apk/res-auto"> 

    <item 
     android:id="@+id/ic_share" 
     android:icon="@drawable/abc_ic_menu_share_holo_dark" 
     android:title="@string/media_share" 
     cycle:showAsAction="ifRoom" 
     cycle:actionProviderClass="android.support.v7.widget.ShareActionProvider" /> 
    <item 
     android:icon="@drawable/abc_ic_menu_share_holo_dark" 
     android:showAsAction="ifRoom" 
     android:title="br"> 
     <menu> 
      <item 
       android:id="@+id/menuSortNewest" 
       android:title="Sort by newest" /> 
      <item 
       android:id="@+id/menuSortRating" 
       android:title="Sort by rating" /> 
     </menu> 
    </item> 

</menu> 

ich würde erwarten, sowohl die ShareActi auf & der Überlauf des popupTheme zu haben, aber es ist nicht der Fall

Umgehung

ich diesen Beitrag bearbeiten werde, sobald ich

Ref eine Abhilfe bekam: https://code.google.com/p/android/issues/detail?id=87285&thanks=87285&ts=1419254842

Antwort

27

Also, hier ist, was für mich gearbeitet hat. Hier ist meine Toolbar xml:

<?xml version="1.0" encoding="utf-8"?> 
<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/action_bar_main" 
    android:layout_height="wrap_content" 
    android:layout_width="fill_parent" 
    app:theme="@style/Toolbar" 
    app:popupTheme="@style/Toolbar_Popup" 
    android:minHeight="?attr/actionBarSize" 
    android:background="?attr/colorPrimary" /> 

Beachten Sie, dass ich beide Thema und popupTheme gesetzt, und ich auch Hintergrund außer Kraft setzen colorPrimary zu sein. Hier ist die Hauptanwendung Thema Beschreibung mit Themen für Werkzeugleiste:

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> 
    <item name="android:actionMenuTextColor">@color/white</item> 

    <!-- Support library compatibility --> 
    <item name="actionMenuTextColor">@color/white</item> 

    <item name="actionBarSize">@dimen/actionbar_height</item> 

    <item name="colorPrimary">@color/dark_blue</item> 
    <item name="colorPrimaryDark">@color/dark_blue</item> 
    <item name="android:textColorPrimary">#607d8b</item> 

</style> 

<style name="Toolbar" parent="Base.ThemeOverlay.AppCompat.ActionBar"> 
    <item name="android:textColorPrimary">#fff</item> 
    <item name="android:background">@color/dark_blue</item> 
</style> 

<style name="Toolbar_Popup" parent="Base.ThemeOverlay.AppCompat.ActionBar"> 
    <item name="android:textColorPrimary">#fff</item> 
    <item name="android:background">@color/dark_blue</item> 
</style> 

So, als Folge, Share Aktion Hintergrund auf den Wert des Hintergrunds in der Hauptwerkzeugleiste Thema eingestellt ist. Und der Hintergrund der Toolbar selbst wird überschrieben.

+1

Schön, dass das eine gute Lösung war. einfach :) – Benoit

+1

Etwas sinnvolles hinzuzufügen wäre true, für mich wurde der Selektor nur als Rand um die Wörter in der Liste angezeigt, wenn sonst gedrückt –

+1

dies wird nicht in v7: 23.1 arbeiten .1 – Max

0

Diese Seite kann hilft Ihr Problem zu lösen: http://www.murrayc.com/permalink/2014/10/28/android-changing-the-toolbars-text-color-and-overflow-icon-color/

Ein Unterschied, den ich in Ihrem XML bemerkte, ist, dass Sie einmal die Eigenschaft android: show verwenden AsAction = "ifRoom" und einmal cycle: showAsAction = "ifRoom".

+1

Ja, der android/Zyklus ist eine Kopie einfügen Fehler. und die Website spricht nicht über dieses spezielle Problem, es ist in der Tat ein Fehler in der AppCompat-Bibliothek, der in Kürze behoben wird. – Benoit

0

Ich kratzte mich seit Ewigkeiten, um das Problem zu lösen. Ich habe eine Lösung für mein Problem gefunden.Hopefuully wird dies auch anderen helfen:

In meiner Symbolleiste Definition Ich war wie so ein eigenes Thema Einstellung:

<android.support.v7.widget.Toolbar  
    ... 
    app:theme="@style/ActionBarThemeOverlay" 
    ... /> 

In meinem styles.xml wurde mein Thema wie folgt definiert:

<style name="ActionBarThemeOverlay" parent="ThemeOverlay.AppCompat.Light"> 
    <item name="android:textColorPrimary">#fff</item> 
    <item name="colorControlNormal">#fff</item> 
    <item name="colorControlHighlight">#3fff</item> 
</style> 

Ich wollte weiße Aktionssymbole in meiner Symbolleiste, also habe ich diese Werte auf Weiß gesetzt. Leider machte es auch mein ShareActionProvider Menü Text weiß (auf einem weißen Hintergrund).

Die Lösung für mich war, die Stileinstellung für textColorPrimary zu entfernen. Meine Symbolleistensymbole waren immer noch weiß, aber ich hatte jetzt den gewünschten dunklen Text im Popup-Share-Provider-Menü.

<style name="ActionBarThemeOverlay" parent="ThemeOverlay.AppCompat.Light"> 
    <item name="colorControlNormal">#fff</item> 
    <item name="colorControlHighlight">#3fff</item> 
</style> 
Verwandte Themen