/ / विषयों के बावजूद उपयुक्त रंगों का उपयोग करें - Android, रंग, थीम

विषयों के बावजूद उपयुक्त रंगों का प्रयोग करें - एंड्रॉइड, रंग, थीम

मैं चाहता हूं कि मेरी गतिविधि में दो संभावित विषय हों, कहते हैं Theme_Holo तथा Theme_Holo_Light, उपयोगकर्ता द्वारा चयनित के रूप में। मुझे इस गतिविधि में क्षैतिज डिवाइडर जैसी चीजों को प्रोग्राम करने की आवश्यकता है। डिवाइडर का रंग चयनित विषय पर निर्भर होना चाहिए। मैं इसे आसानी से कैसे कर सकता हूं?

आदर्श रूप से मानक के लिए एक नाम होना चाहिएइस्तेमाल किए गए विषय के बावजूद एक विभक्त का रंग, और उस रंग के नाम का वास्तविक आरजीबी बोध स्वचालित रूप से चयनित विषय से मेल खाएगा। क्या ऐसी कोई बात है? यह मेरे लिए संभावना नहीं लगता है कि प्रोग्रामर को आरबीजी मूल्यों को हार्डकोड करने की आवश्यकता है।

बेशक, विभक्त केवल एक उदाहरण है। मैं EditText, या अन्य विगेट्स का रंग भी इस तरह से नाम देना चाहूंगा, जो थीम पर निर्भर नहीं करता है।

उत्तर:

जवाब के लिए 0 № 1

आपकी गतिविधि में onCreate() विधि (ओं), फोन करने से पहले setContentView(), थीम का उपयोग कर सेट करें this.setTheme(customTheme);

या यह एक कोशिश दे, Android एप्लिकेशन में थीम का उपयोग करना


जवाब के लिए 0 № 2

आप अपनी खुद की थीम विशेषताएँ बना सकते हैं और उन्हें अपने ऐप के थीम में उपयोग कर सकते हैं, और उपयोगकर्ता को आपके ऐप के थीम के बीच स्विच करने की अनुमति दे सकते हैं।

सबसे पहले, नामक एक फाइल बनाएं attrs.xml में /res/values फ़ोल्डर और कुछ थीम विशेषताओं को परिभाषित करें:

<resources>
<attr name="myDividerColor" format="color" />
</resources>

इसके बाद, अपने में दो थीम बनाएं /res/values/styles.xml (या में /res/values/themes.xml यदि आप अपने विषयों और शैलियों को अलग से करते हैं)। एक विषय Android के अंधेरे विषय का विस्तार करता है और एक Android के प्रकाश विषय का विस्तार करता है। अपने विषयों में अपनी कस्टम विशेषताएँ जोड़ें:

<resources>
<!-- Dark theme -->
<style name="AppTheme_Dark" parent="@android:Theme.Holo">
...
<item name="myDividerColor">@color/divider_dark</item>
</style>

<!-- Light theme. -->
<style name="AppTheme_Light" parent="@android:Theme.Holo.Light">
...
<item name="myDividerColor">@color/divider_light</item>
</style>
</resources>

ध्यान दें कि मैंने इस्तेमाल किया name="myDividerColor", नहीं android:name="myDividerColor"

अंत में, अपने गतिविधि कोड में आप निम्नानुसार रंग प्राप्त कर सकते हैं:

// the attrs you want
int[] attrs = {R.attr.myDividerColor};
// get attr values for the current theme
TypedArray a = obtainStyledAttributes(attrs);
// first arg is the index of the array, in same order as attrs array above
// second arg is a default value (if not defined or not a resource)
int dividerColor = a.getColor(0, Color.TRANSPARENT);