2010-05-13 19 views
10

मैं थीम से रंगों का उपयोग कुछ HTML पर लागू करने के लिए करना चाहता हूं, मेरा ऐप प्रतिपादन कर रहा है। मैं सोच रहा हूं कि क्या मैं ऐसा कर सकता हूं?एंड्रॉइड थीम से कलर वैल्यू (# आरजीबी) निकालने के लिए कैसे?

मैं जैसे वे themes.xml में निर्दिष्ट रंगों का उपयोग करने के लिए देख रहा हूँ:

<item name="colorBackground">@android:color/background_dark</item> 
    <item name="textColorPrimary">@android:color/primary_text_dark</item> 

तो उन्हें देखने-वे उसी तरह से घोषित किया गया है। तो मैंने सोचा कि मैं उन्हें उसी तरह से भी एक्सेस कर सकता हूं।

हालांकि यह कारण नहीं है। जब उन मूल्यों को इस तरह से उपयोग करने के लिए कोशिश कर रहा है:

TypedValue tv = new TypedValue(); 
    getTheme().resolveAttribute(android.R.attr.colorBackground, tv, true); 

    System.out.println("tv.string=" + tv.string); 
    System.out.println("tv.coerced=" + tv.coerceToString()); 

    int colorResourceId = getResources().getColor(tv.resourceId); 
    System.out.println("colorResourceId=" + colorResourceId); 

    tv = new TypedValue(); 
    getTheme().resolveAttribute(android.R.attr.textColorPrimary, tv, true); 

    System.out.println("tv.string=" + tv.string); 
    System.out.println("tv.coerced=" + tv.coerceToString()); 

    colorResourceId = getResources().getColor(tv.resourceId); 
    System.out.println("colorResourceId=" + colorResourceId); 

मैं एक परिणाम के रूप में इस मिल:

I/System.out(1578): tv.string=null 
I/System.out(1578): tv.coerced=#ffffffff 
I/System.out(1578): colorResourceId=-1 

I/System.out(1578): tv.string=res/color/primary_text_light.xml 
I/System.out(1578): tv.coerced=res/color/primary_text_light.xml 
I/System.out(1578): colorResourceId=-16777216 

परिणाम अलग हैं। पहला व्यक्ति वास्तव में मुझे रंग "#fffffff" देता है जो मेरे लिए काम करेगा, दूसरा वाला मुझे केवल एक एक्सएमएल देता है।

क्या मुझे वास्तविक रंग को हल करने के लिए यहां कुछ और हुप्स के माध्यम से कूदने की आवश्यकता है? क्या मेरा मूल इरादा बिल्कुल काम करता है? शायद यह काम नहीं करेगा, क्योंकि रंग मनमाने ढंग से drawables हो सकता है?

मुझे प्रासंगिक दस्तावेज नहीं मिला, लेकिन यदि आप किसी को जानते हैं, तो कृपया मुझे वहां बताएं।

बीटीडब्ल्यू। मैंने StyledAttributes() प्राप्त करने का भी प्रयास किया, लेकिन यह मूल रूप से एक ही मुद्दे था।

+0

[यह उत्तर] (http://stackoverflow.com/a/6540378/15882) दिखाता है कि रंग को वापस अपने हेक्स स्ट्रिंग में कैसे चालू करें। –

उत्तर

6

मुझे लगता है कि आपको colorResourceIdmyColor या ऐसा कुछ नाम बदलना चाहिए, क्योंकि यह आपके कोड में होना चाहिए, जहां तक ​​मैं कह सकता हूं।

-16777216 0xFF000000 के बराबर है, जो काला रंग है, इसलिए शायद आपकी थीम एक सफेद पृष्ठभूमि पर काली पाठ थी।

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