2012-07-13 25 views
17

मैं DarkActionBar से प्राप्त एक कस्टम थीम का उपयोग कर रहा हूं और मैं लाइट होलो थीम का उपयोग करते समय श्वेत होने के लिए ड्रॉपडाउन मेनू को कस्टमाइज़ करना चाहता हूं।स्टाइलिंग एक्शनबार ड्रॉपडाउन मेनू

मैं सफेद का उपयोग कर के लिए पृष्ठभूमि को बदलने में सक्षम किया गया है:

<style name="MyTheme" parent="@style/Theme.Light.DarkActionBar"> 
    <item name="android:actionDropDownStyle">@style/MyDropDownNav</item> 
</style> 
<style name="MyDropDownNav"> 
    <item name="android:background">@drawable/spinner_background_white</item> 
    <item name="android:popupBackground">@drawable/menu_dropdown_panel_whyite</item> 
    <item name="android:dropDownSelector">@drawable/selectable_background_white</item> 
</style> 

लेकिन मैं कैसे काला करने के लिए पाठ का रंग बदलने के लिए के किसी भी सुराग नहीं है। चूंकि सफेद खींचने योग्य सेट करने के बाद समस्या यह है कि टेक्स्ट दिखाई नहीं दे रहा है क्योंकि सफेद पृष्ठभूमि पर सफेद है।

उत्तर

21

कुछ जांच के बाद मैं खुद का जवाब देता हूं।

  • अनुकूलित android:spinnerDropDownItemStyleactionBarWidgetTheme के लिए बदल रहा है यह पाठ उपस्थिति है: अलावा के सवाल स्टाइल के लिए आपको करना होगा।
  • यह भी न भूलें कि ड्रॉपडाउन सूची आपके द्वारा उपयोग किए जाने वाले एडाप्टर द्वारा प्रबंधित की जाती है। फिर यदि आपने मानक एक (simple_dropdown_item_1line) का उपयोग किया है तो कोई समस्या नहीं है। लेकिन अगर आपने मेरे जैसे कस्टम (एक आइकन जोड़ने में सक्षम होने के लिए) इस्तेमाल किया है तो अपने लेआउट टेक्स्टव्यू मेंstyle="?attr/spinnerDropDownItemStyle" लागू करना न भूलें।

तब अंतिम कस्टम शैली है:

<resources xmlns:android="http://schemas.android.com/apk/res/android"> 

<style name="Theme.myapp" parent="@style/Theme.Light.DarkActionBar"> 
    <item name="android:actionDropDownStyle">@style/myapp_DropDownNav</item>   
    <item name="android:actionBarWidgetTheme">@style/myapp.actionBarWidgetTheme</item> 
</style> 

<style name="myapp.actionBarWidgetTheme" parent="@style/Theme."> 
    <item name="android:spinnerDropDownItemStyle">@style/myapp.Widget.DropDownItem.Spinner</item> 
</style> 

<style name="myapp_DropDownNav" parent="@style/Widget.Spinner.DropDown.ActionBar"> 
    <item name="background">@drawable/spinner_background_ab_myapp</item> 
    <item name="android:background">@drawable/spinner_background_ab_myapp</item> 
    <item name="android:popupBackground">@drawable/menu_dropdown_panel_myapp</item> 
    <item name="android:dropDownSelector">@drawable/selectable_background_myapp</item> 
</style> 

<style name="myapp.Widget.DropDownItem.Spinner" parent="Widget.DropDownItem.Spinner"> 
    <item name="android:textAppearance">@style/myapp.TextAppearance.Widget.DropDownItem</item> 
</style> 

<style name="myapp.TextAppearance.Widget.DropDownItem" parent="TextAppearance.Widget.DropDownItem"> 
    <item name="android:textColor">@color/black</item> 
</style> 

कहाँ myapp_DropDownNav में ड्रॉएबल सफेद पृष्ठभूमि जो कि आप Android Asset Studio

+5

एपीआई 1 9 –

3

itemTextAppearance सेट करने का प्रयास करें। वह जो आपको चाहिए वह प्राप्त करना चाहिए।

0

में ActionBar Style generator साथ उत्पन्न कर सकते हैं मेरी सलाह बस से प्राप्त करना है कर रहे हैं शेरलॉक। लाइट थीम और लागू फ़ील्ड को डार्क वैल्यू में बदलें। मेरे ऐप के लिए, हम एक सफेद "अप" आइकन चाहते थे, और एक्शन लेबल्स के लिए सफेद टेक्स्ट चाहते थे। मैं अपने एक्शनबार आइकन के अंधेरे संस्करण प्रदान नहीं करता, इसलिए वे सभी सफेद हैं। तो इसके साथ घूमने के कई घंटों के बाद और विभिन्न लोगों के सुझावों का पालन करने के बाद, मुझे अंततः एबीएस थीम फ़ाइल में जो खोजा गया था, उसे मिला।

मैं Sherlock.Light से विरासत (ठीक है, तकनीकी रूप से HoloEverywhereLight.Sherlock लेकिन ...) और परिवर्तन:

<item name="android:actionMenuTextColor">@color/White</item> 
<item name="actionMenuTextColor">@color/White</item> 
<item name="android:homeAsUpIndicator">@drawable/abs__ic_ab_back_holo_dark</item> 
<item name="homeAsUpIndicator">@drawable/abs__ic_ab_back_holo_dark</item> 
<item name="android:dividerVertical">@drawable/abs__list_divider_holo_dark</item> 
<item name="dividerVertical">@drawable/abs__list_divider_holo_dark</item> 

यह है कि। वर्गों को व्यवस्थित करने, कोड में रीस्टाइल चीजों को इत्यादि करने की कोशिश करने से यह आसान और आसान तरीका है।

2

मैंने ऐसा करने का सबसे आसान तरीका क्या ठहराया है, इस पर ठोकर खाई है। मैं AppCompat लाइब्रेरी के साथ काम कर रहा था।

<style name="ApplicationTheme" parent="@style/Theme.AppCompat"> 
    <item name="android:actionBarWidgetTheme">@style/Theme.AppCompat.Light</item> 
    <item name="actionBarWidgetTheme">@style/Theme.AppCompat.Light</item> 
</style> 
+0

एक्सेलेंट में काम नहीं करता है! लेकिन मुझे लगता है कि यह केवल लाइट के साथ काम करेगा। डार्कएक्शनबार थीम। – rubenlop

संबंधित मुद्दे