2012-01-09 29 views
15

मुझे एक अंधेरे एक्शनबार चाहिए, लेकिन शेष एप्लिकेशन होलो का उपयोग करें। लाइट थीम। मुझे पता है कि एक थीम है। Holo.Light.DarkActionBar थीम आईसीएस/4.0 में लेकिन मैं चाहता हूं कि यह हनीकॉम/3.0 + में भी काम करे।Holo.Light थीम का उपयोग कैसे करें, लेकिन एक्शनबार का उपयोग होलो साथ आईसीएस का उपयोग करें?

पल में मैं अंधेरे होलो थीम का उपयोग कर रहा हूं और मेरे बाकी घटकों के लिए मैं एक संदर्भथीमप्रैपर का उपयोग कर रहा हूं। लेकिन यह बहुत काम है और आसानी से त्रुटियों का कारण बन सकता है।

क्या यह संभव है?

उत्तर

24

एक कस्टम शैली बनाएं और पैरेंट शैली को होलो लाइट थीम पर सेट करें लेकिन एक्शनबार सामान्य होलो में सेट करें।

कुछ इस तरह काम (सिर्फ मेरी स्मृति में से) क्या करना चाहिए के साथ एक xml फ़ाइल:

<style name="appstyle0" parent="android:style/Theme.Holo.Light"> 
    <item name="android:actionBarStyle">@android:style/Widget.Holo.ActionBar</item> 
</style> 

फिर शैली के रूप में अपने AndroidManifest.xml में appstyle0 सेट और अपने सभी activitys में होलो प्रकाश विषय हैं लेकिन एक्शन बार शैली होलो अंधेरा है।

संपादित करें: मैंने जांच की कि मेरा पहला जवाब क्यों काम नहीं करता है।

<style name="Widget.Holo.Light.ActionBar" parent="Widget.Holo.ActionBar"> 
    <item name="android:titleTextStyle">@android:style/TextAppearance.Holo.Widget.ActionBar.Title</item> 
    <item name="android:subtitleTextStyle">@android:style/TextAppearance.Holo.Widget.ActionBar.Subtitle</item> 
    <item name="android:background">@android:drawable/ab_transparent_light_holo</item> 
    <item name="android:backgroundStacked">@android:drawable/ab_stacked_transparent_light_holo</item> 
    <item name="android:backgroundSplit">@android:drawable/ab_bottom_transparent_light_holo</item> 
    <item name="android:homeAsUpIndicator">@android:drawable/ic_ab_back_holo_light</item> 
    <item name="android:progressBarStyle">@android:style/Widget.Holo.Light.ProgressBar.Horizontal</item> 
    <item name="android:indeterminateProgressStyle">@android:style/Widget.Holo.Light.ProgressBar</item> 
</style> 

एक्शन बार शैलियों.एक्सएमएल में परिभाषित किया गया है जो विशेष रूप से मुख्य विषय द्वारा निर्धारित विशेषताओं के साथ है। सबसे पहले बीजी पारदर्शी है, इसलिए आपको माता-पिता के रूप में "Widget.Holo.Light.ActionBar.Solid" का उपयोग करना चाहिए। फिर आपको विभिन्न वस्तुओं को एक-एक करके अंधेरे विषय पर सेट करना होगा।

<style name="TextAppearance.Holo.Widget.ActionBar.Title.Own" 
     parent="TextAppearance.Holo.Widget.ActionBar.Title"> 
    <item name="android:textColor">@android:color/primary_text_holo_dark</item> 
    <item name="android:textColorHighlight">@android:color/highlighted_text_holo_dark</item> 
    <item name="android:textColorHint">@android:color/hint_foreground_holo_dark</item> 
    <item name="android:textColorLink">@android:color/holo_blue_light</item> 
</style> 

सेट यह अब के रूप में: titleTextStyle उदाहरण के रूप में लेते हैं।

<item name="android:titleTextStyle">@android:style/TextAppearance.Holo.Widget.ActionBar.Title.Own</item> 

उपरोक्त xml विशेषताओं के साथ इस तरह आगे बढ़ें।

पैरामीटर के लिए style.xml और themes.xml में सभी संबंधित विशेषताओं को खोजने के लिए। क्षमा बताने के लिए है, लेकिन मुझे लगता है कि वहाँ कोई आसान तरीका है, मैं क्या देखने के लिए अनुसार ...

+0

के लिए नीचे पंक्ति जोड़ें मेरे लिए काम नहीं करता है।उदाहरण के लिए: '<शैली का नाम =" video2brainTheme "parent =" @ android: style/theme.Holo.Light "> @ रंग/पृष्ठभूमि_color @ शैली/CustomActionBarStyle <शैली नाम =" CustomActionBarStyle "जनक =" एंड्रॉयड: Widget.Holo.ActionBar "> \t \t <आइटम नाम =" एंड्रॉयड: paddingLeft "> 32dp ' यह मुझे पैडिंग लेफ्ट देता है लेकिन एक्शनबार में अंधेरे होलो थीम को लागू नहीं करता है - यह अभी भी हल्का विषय है। – Thomas

+0

बताना क्षमा करें, यह इतना आसान नहीं है। मैंने जवाब अपडेट किया। – KarlKarlsom

+0

Thx - मैं इसे आजमाउंगा। – Thomas

5

मैं एक ऐसी ही समस्या में पड़ गए जब मैं ActionBar में एक कस्टम दृश्य रखना चाहते थे। मैं एक अंधेरे एक्शन बार चाहता था जबकि शेष ऐप प्रकाश बना रहा। अधिक विशेष रूप से मेरे पास एक्शन बार में स्पिनर थे।

सबसे पहले अपने विषय का विस्तार करना चाहिए

<style name="MyTheme.Light" parent="android:Theme.Holo.Light.DarkActionBar"> 

इसके बाद, अपने गतिविधि से, अपने विचारों बढ़ा-चढ़ाकर के लिए संदर्भ के रूप में getActionBar().getThemedContext() का उपयोग करें। मेरे उदाहरण में, मैंने अपने स्पिनर सरणी एडाप्टर को पास किया है।

मेरे लिए पूरी तरह से काम किया।

0

आसान मिले ... 100%

काम करता है AssemblyInfo.cs

[assembly: Application(Theme = "@android:style/Theme.Material.Light.DarkActionBar")] 
संबंधित मुद्दे