2014-10-22 10 views
28

प्रसंगAppCompat उपकरण पट्टी popupTheme ShareAction MenuItem

में उपयोग नहीं का उपयोग करना AppCompat v7 21.0.0/21.0.2/21.0.3

समस्या

टूलबार के popupTheme ShareAction

टूलबार पर शैली:

पर लागू नहीं है
<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> 

अतिप्रवाह मेनू आइटम popupTheme उपयोग कर रहा है ठीक से

Overflow Item

दूसरी ओर ShareAction popupTheme प्राप्त नहीं होता है। कुछ परीक्षणों के बाद मैंने देखा कि यह ऐप प्राप्त हुआ है: टूलबार का विषय अंधेरा है।

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

ShareAction Menu Item

आदेश ShareAction मैं कई विशेषताएं सेट करने की कोशिश की पर काले पाठ प्राप्त करने के लिए और सेटिंग "एंड्रॉयड: textColorPrimary" द्वारा (टूलबार विषय पर) मैं मैं क्या चाहते हैं, लेकिन मेरी प्रतीक मिल तो

<?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> 

मैं उम्मीद होती है दोनों ShareActi: उपकरण पट्टी पर भी इस रंग जो अजीब है ...

मेनू एक्सएमएल निम्नलिखित है लेता है & पर अतिप्रवाह popupTheme के लिए, लेकिन यह मामला

नहीं है वर्कअराउंड

मैं इस पोस्ट को संपादित करेंगे एक बार मैं एक समाधान

रेफरी मिल गया: https://code.google.com/p/android/issues/detail?id=87285&thanks=87285&ts=1419254842

उत्तर

27

तो, यहां मेरे लिए क्या काम किया गया है। यहाँ मेरी टूलबार एक्सएमएल है:

<?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" /> 

सूचना है कि मैं दोनों विषय और popupTheme निर्धारित करते हैं, और मैं भी पृष्ठभूमि ओवरराइड colorPrimary किया जाना है। यहां टूलबार के लिए विषयों के साथ मुख्य अनुप्रयोग विषय विवरण दिया गया है:

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

तो, एक परिणाम के रूप, शेयर कार्रवाई पृष्ठभूमि मुख्य टूलबार विषय में पृष्ठ भूमि की मान पर सेट है। और टूलबार की पृष्ठभूमि खुद को अतिरंजित है।

+1

अच्छा धन्यवाद कि यह एक अच्छा कामकाज था। सरल :) – Benoit

+1

कुछ जोड़ने के लिए उपयोगी true होगा, मेरे लिए चयनकर्ता सूची में शब्दों के चारों ओर एक सीमा के रूप में दिखा रहा था जब अन्यथा –

+1

दबाया गया यह v7: 23.1 में काम नहीं करेगा .1 – Max

0

यह पृष्ठ मई में मदद करता है अपनी समस्या का समाधान करने के लिए: http://www.murrayc.com/permalink/2014/10/28/android-changing-the-toolbars-text-color-and-overflow-icon-color/

आपके एक्सएमएल में एक अंतर मैंने देखा है कि आप एक बार संपत्ति एंड्रॉइड का उपयोग करते हैं: शो AsAction = "ifRoom" और एक बार चक्र: showAsAction = "ifRoom"।

+1

हां एंड्रॉइड/चक्र एक कॉपी पेस्ट गलती है। और वेबसाइट इस विशेष समस्या के बारे में बात नहीं करती है, वास्तव में यह AppCompat lib में एक बग है जिसे जल्द ही ठीक किया जाएगा – Benoit

0

मैं इसे हल करने की कोशिश करने वाले युगों के लिए अपने सिर को खरोंच कर रहा था। मुझे मेरी समस्या का समाधान मिला।Hopefuully इस दूसरों को भी मदद मिलेगी:

मेरे उपकरण पट्टी परिभाषा में मैं बहुत की तरह एक कस्टम थीम की स्थापना की गई थी:

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

:

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

मेरी styles.xml में, मेरा विषय के रूप में परिभाषित किया गया था मैं अपने टूलबार में सफेद क्रिया आइकन चाहता था, इसलिए मैं इन मानों को सफेद पर सेट कर रहा था। दुर्भाग्य से यह मेरा ShareActionProvider मेनू टेक्स्ट सफेद (एक सफेद पृष्ठभूमि पर) भी बना रहा था।

मेरे लिए समाधान textColorPrimary के लिए शैली सेटिंग को हटाना था। मेरे टूलबार आइकन अभी भी सफेद थे लेकिन अब पॉपअप शेयर प्रदाता मेनू में वांछित अंधेरा पाठ था।

<style name="ActionBarThemeOverlay" parent="ThemeOverlay.AppCompat.Light"> 
    <item name="colorControlNormal">#fff</item> 
    <item name="colorControlHighlight">#3fff</item> 
</style> 
संबंधित मुद्दे