2013-08-28 8 views
5

मैं एपीआई लेवल 10+ (एंड्रॉइड 2.3.3+) पर एक्शनबार रखने के लिए v7 समर्थन लाइब्रेरी का उपयोग कर रहा हूं। अब, मैं थोड़ा सा दिखाना चाहता हूं, इसलिए मैंने एक एप्लीकेशन थीम जोड़ा। मेरी values/styles.xml के अंश:v10 और v11 + के लिए सामान्य शैलियों?

यह एंड्रॉयड 2.3.3, जहां compat सामान प्रयोग किया जाता है पर ठीक काम करता है। हालांकि, एंड्रॉइड 4.3 पर एन 4 (या एक एमुलेटर) पर, शैलियों को लागू नहीं किया जाता है। अगर मैं करने के लिए styles.xml फ़ाइल बदलने के लिए:

<style name="AppTheme" parent="Theme.AppCompat.Light"> 
    <item name="android:actionBarStyle">@style/ActionBarStyle</item> 
</style> 

<style name="ActionBarStyle" parent="@style/Widget.AppCompat.ActionBar"> 
    <item name="android:background">@drawable/bg_actionbar</item> 
</style> 

(नोटिस जोड़ा android: उपसर्ग) उस पर 4.3 काम करता है, लेकिन 2.3 पर नहीं है (शैली लागू नहीं)।

क्या कोई तरीका है कि मैं प्रत्येक <item> को दो बार बिना किसी उपसर्ग के एक बार निर्दिष्ट किए बिना प्राप्त कर सकता हूं?

उत्तर

6

यहां Google दस्तावेज़ साइट पर एक आदर्श उदाहरण है:

http://developer.android.com/guide/topics/ui/actionbar.html#StyleExample

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <!-- the theme applied to the application or activity --> 
    <style name="CustomActionBarTheme" 
      parent="@style/Theme.AppCompat.Light"> 
     <item name="android:actionBarStyle">@style/MyActionBar</item> 
     <item name="android:actionBarTabTextStyle">@style/TabTextStyle</item> 
     <item name="android:actionMenuTextColor">@color/actionbar_text</item> 

     <!-- Support library compatibility --> 
     <item name="actionBarStyle">@style/MyActionBar</item> 
     <item name="actionBarTabTextStyle">@style/TabTextStyle</item> 
     <item name="actionMenuTextColor">@color/actionbar_text</item> 
    </style> 

    <!-- general styles for the action bar --> 
    <style name="MyActionBar" 
      parent="@style/Widget.AppCompat.ActionBar"> 
     <item name="android:titleTextStyle">@style/TitleTextStyle</item> 
     <item name="android:background">@drawable/actionbar_background</item> 
     <item name="android:backgroundStacked">@drawable/actionbar_background</item> 
     <item name="android:backgroundSplit">@drawable/actionbar_background</item> 

     <!-- Support library compatibility --> 
     <item name="titleTextStyle">@style/TitleTextStyle</item> 
     <item name="background">@drawable/actionbar_background</item> 
     <item name="backgroundStacked">@drawable/actionbar_background</item> 
     <item name="backgroundSplit">@drawable/actionbar_background</item> 
    </style> 

    <!-- action bar title text --> 
    <style name="TitleTextStyle" 
      parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title"> 
     <item name="android:textColor">@color/actionbar_text</item> 
    </style> 

    <!-- action bar tab text --> 
    <style name="TabTextStyle" 
      parent="@style/Widget.AppCompat.ActionBar.TabText"> 
     <item name="android:textColor">@color/actionbar_text</item> 
    </style> 
</resources> 
+0

आधिकारिक दस्तावेज़ों के लिंक के कारण यह उत्तर स्वीकार किया गया जो स्पष्ट रूप से प्रत्येक '' को दो बार निर्दिष्ट करने की अनुशंसा करता है। कम से कम अब मुझे पता है कि मैं यह नहीं कर रहा हूं ** गलत **, बस * बदसूरत *। – Felix

+2

@ फ़ेलिक्स 'कम से कम अब मुझे पता है कि मैं इसे गलत नहीं कर रहा हूं, बस बदसूरत हूं। हाहा, अच्छी तरह से कहा। आप यह भी देख सकते हैं: [यूआई में स्टाइल और थीम्स लागू करना] (http://developer.android.com/guide/topics/ui/themes.html#ApplyingStyles)। उपधारा के लिए नीचे स्क्रॉल करें 'मंच संस्करण के आधार पर एक थीम का चयन करें'। भविष्य में आपकी मदद कर सकता है। – Vikram

2

मैं आपकी समस्या का गलत नहीं किया है, तो आप इसे एक साथ इस तरह से

<style name="AppTheme" parent="Theme.AppCompat.Light"> 
    <item name="android:actionBarStyle">@style/ActionBarStyle</item> 
    <item name="actionBarStyle">@style/ActionBarStyle</item> 
</style> 

<style name="ActionBarStyle" parent="@style/Widget.AppCompat.ActionBar"> 
    <item name="android:background">@drawable/bg_actionbar</item> 
    <item name="background">@drawable/bg_actionbar</item> 
</style> 

मेरे अनुभव में संक्षिप्त कर सकते हैं, इस तरह से ग्रहण समय त्रुटियों आप (फाहा की वजह से styles.xml अंदर somethings बदलने हर बार संकलन देता है अगर मैं अच्छा याद रखें), लेकिन clean and rebuild उन त्रुटियों को दूर कर दें।

4

है वहाँ किसी भी तरह से मैं इस के आसपास उपसर्ग के साथ प्रत्येक <item> को निर्दिष्ट दो बार, एक बार बिना प्राप्त कर सकते हैं और बिना एक बार?

एक और तरीका संस्करण विशिष्ट res/values-XX फ़ोल्डर्स बनाना होगा।

संस्करणों 10+ डिफ़ॉल्ट res/values/styles.xml के साथ सौदा करते हैं::

के बाद से डिवाइड संस्करण 10 और संस्करणों 10+ है, तो आप res/values-v10/styles.xml युक्त बना सकते हैं

<style name="AppTheme" parent="Theme.AppCompat.Light"> 
    <item name="android:actionBarStyle">@style/ActionBarStyle</item> 
</style> 

<style name="ActionBarStyle" parent="@style/Widget.AppCompat.ActionBar"> 
    <item name="android:background">@drawable/bg_actionbar</item> 
</style> 

फिर भी, यह नहीं ' <item></item> को दो बार निर्दिष्ट करने से बहुत अलग है।

संदर्भ के लिए, आप ActionBarSherlock की प्रोजेक्ट संरचना को देख सकते हैं। यह आपको कुछ पॉइंटर्स प्रदान करना चाहिए।

आप यह भी देख सकते हैं: Applying Styles and Themes to the UI। उप-धारा Select a theme based on platform version पर नीचे स्क्रॉल करें।

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