2012-01-25 10 views
14

मैं attrs.xml में मिल गया हैएंड्रॉयड रंग चयनकर्ता कस्टम साथ काम नहीं करता विशेषताओं

<resources> 
    <!-- theme specific colors --> 
    <attr format="reference|color" name="foreground" /> 
    <attr format="reference|color" name="background" /> 
</resources> 

और फिर theme.xml

<style name="MyTheme" parent="android:Theme.Black"> 
    <item name="android:windowNoTitle">true</item> 
    <item name="foreground">#0000FF</item> 
    <item name="background">#00FF00</item> 
</style> 

में मैं भी बनाया रंग चयनकर्ता forground_to_background.xml नामित

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_pressed="true" android:color="?background"/> <!-- pressed --> 
    <item android:state_focused="true" android:color="?background"/> <!-- focused --> 
    <item android:color="?foreground"/> <!-- default --> 
</selector> 

अब मैं TextView में एक साथ यह सब का उपयोग करना चाहते हैं:

<TextView 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:textColor="@color/forground_to_background" /> 

दुर्भाग्य से यह काम नहीं करता। अच्छे हरे नीले रंग के रंग होने के बजाय मुझे केवल एक रंग मिला है - लाल। TextView हमेशा लाल है। जब मैं टेक्स्टव्यू को "फोरग्राउंड" रंग बदलने के लिए बदलता हूं तो बदल जाएगा। साथ ही जब मैं रंगीन चयनकर्ता में "? Xxxx" से हार्डकोडेड मान में बदलता हूं, तो "# 00f" रंग काम शुरू होता है।

समस्या कहां है? मैं क्या गलत कर रहा हूं?

संपादित करें: मेरा मानना ​​है कि यह समस्या/बग Can a selector resource use a color defined in a style?

EDIT2 की डुप्लिकेट है: इसके अलावा जब मैं ListView अनुप्रयोग क्रैश में इस TextView का उपयोग का प्रयास करें। यह एक्सएमएल पार्स नहीं कर सकता है।

+0

जाहिर अंक में एंड्रॉयड एल पूर्वावलोकन तय किया गया था, यहाँ विवरण: https://code.google.com/p/android/issues/detail?id=26251 –

+0

आप अपने प्रश्न के लिए इस सवाल का जवाब मिला? मुझे एक ही समस्या है – Pavya

उत्तर

5

कारण है कि ऐसा होता है कि मैं अलग प्रसंग है देखते हैं। कॉन्टेक्स्ट को बढ़ाने के दौरान मेरे थीम एटर्स के बारे में पता है, लेकिन ListView एडाप्टर में मैंने एप्लीकेशन कॉन्टेक्स्ट पास किया जो उन एटर्स से अवगत नहीं था। अब मैं क्यों यह उनके बारे में पता नहीं है पता नहीं है;)

+0

का उपयोग करने का प्रयास करें संदर्भ के बारे में अधिक जानकारी के लिए यहां जाएं: http://www.doubleencore.com/2013/06/context/ अलग-अलग संदर्भ अलग-अलग चीजें जानते हैं ... – Mikooos

+0

इस तरह की मूर्खतापूर्ण गलती मैं अपने सिर पर टक्कर लगी थी दिवार। मैंने कभी सोचा नहीं कि मैं इतनी सरल गलती से गलत हो जाऊंगा। आपने मेरा दिन बचाया –

0

आप यकीन है कि अगर आप गतिविधि या TextView को MyTheme आवेदन कर रहे हैं? एक और चीज जो आप कोशिश कर सकते हैं वह है कि "?" ऑपरेटर आपके forground_to_background.xml में, इसके बजाय "@" का उपयोग करने का प्रयास कर रहा है। कि अगर आपकी समस्या का समाधान होता

+0

मैं सकारात्मक हूं कि मैं MyTheme का उपयोग करता हूं :) मैं "@" प्रोजेक्ट का उपयोग नहीं कर सकता संकलित नहीं होगा। – Mikooos

+0

मुझे लगता है? अग्रभूमि काम नहीं करेगा। @ रंग/अग्रभूमि – CChi

11

आप संदर्भ नहीं दे सकता attr/जब एक चयनकर्ता के लिए रंग चुनने। यदि आप अपने चयनकर्ता में प्रति-थीम रंग चाहते हैं, तो आप क्या कर सकते हैं, एकाधिक चयनकर्ता बनाते हैं जो @ रंग/और @ ड्रॉइंग/संदर्भित करते हैं, और उसके बाद एक "संदर्भ" एटीआर होता है जो चयनित चयनकर्ताओं में से किसी एक को चुनता है।

<attr name="forground_to_background" format="reference" />

तो आप की तरह

android:textColor="?attr/forground_to_background" 

पाठ रंग मेरा मानना ​​है कि पाठ हमेशा लाल था, क्योंकि एंड्रॉयड एक रंग (लाल) के रूप में attr के पूर्णांक मान की व्याख्या के बजाय का उपयोग कर रहा था स्थापित करने के लिए यह वास्तव में आप जो चाहते थे उसके लिए एक लुकअप के रूप में।

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

  • कोई संबंधित समस्या नहीं^_^