2011-04-12 17 views
17

मैं है निम्नलिखित चयनकर्ता के अंतर्गत रेस/रंग/redeemlist_item_color.xml एक एक्सएमएल फ़ाइल में परिभाषित:सेटिंग TextView रंग प्रोग्राम के रूप में

<?xml version="1.0" encoding="utf-8"?> 
    <selector xmlns:android="http://schemas.android.com/apk/res/android"> 

     <item android:state_pressed="true" 
      android:color="#FFFFFF" /> <!-- pressed --> 

     <item android:state_selected="true" 
      android:color="#FFFFFF" /> <!-- focused --> 

     <item android:color="#000000" /> <!-- default --> 

    </selector> 

मैं भी एक ListView आइटम लेआउट में एक TextView है। जब मैं XML में ऊपर चयनकर्ता को यह TextView पर android:textColor निर्धारित करते हैं, तो रंग में परिवर्तन के लिए सही ढंग से जब जा सकते हैं। हालांकि, मैं निम्नलिखित तरीके से प्रोग्राम के रूप में इस संसाधन स्थापित करने के लिए कोशिश कर रहा हूँ:

holder.label.setTextColor(R.color.redeemlist_item_color); 

जब इस तरह से सेट, रंग अब बदल जाता है। क्या एक चयनकर्ता को TextView को इस तरह से असाइन किया जा सकता है?

उत्तर

25

मुझे लगता है कि आपको लगता है कि विविधता


संपादित की findViewById या कुछ और जोड़ने की जरूरत हो सकती है: ऊपर सही नहीं है के रूप में मेरी टिप्पणी प्रति उचित जवाब

setTextColor(getResources().getColorStateList(R.color.redeemlist_item_color)); 
+0

यहाँ HD_Mouse से मेरी टिप्पणी है। मैंने पहले ही ViewById() खोजने के लिए एक कॉल किया है। मेरी समस्या एक शून्य सूचक अपवाद या कुछ भी नहीं है, दृश्य ठीक लोड करता है। यह कोड है जो बेसएडाप्टर के उप-वर्ग में है। –

+2

मुझे इसे दोबारा दोहराएं: आपको आर को एक मान में परिवर्तित करने की आवश्यकता है। मैंने सोचा कि उचित कार्य Viewbyid प्राप्त किया गया था। मैं गलत था ... इस प्रयास करें: setTextColor (। GetResources() getColor (R.color.redeemlist_item_color)); – Rasman

+26

@ रस्मान: यह सही नहीं है, किसी को ** setTextColor (getResources() .getColorStateList (R.color.redeemlist_item_color)) का उपयोग करना चाहिए; ** – Leeeeeeelo

0

RasMan सही है। आपको टेक्स्ट व्यू को एक आईडी, एंड्रॉइड: आईडी = "@ +/कुछ" देना होगा। आप उस आईडी का उपयोग करके उस विशेष संदर्भ को पुनर्प्राप्त करते हैं और findViewById पाते हैं, और फिर आप टेक्स्ट रंग सेट कर सकते हैं।

+0

ठीक है, शायद मैं बाहर छोड़ दिया बहुत ज्यादा कोड का उपयोग करें। मैंने पहले ही ViewById() खोजने के लिए एक कॉल किया है। मेरी समस्या एक शून्य सूचक अपवाद या कुछ भी नहीं है, दृश्य ठीक लोड करता है। यह कोड है जो बेसएडाप्टर के उप-वर्ग में है। –

4

आप कोशिश कर सकते हैं:

holder.label.setTextColor (। GetResources() getColor (R.color.redeemlist_item_color));

के बजाय:

holder.label.setTextColor (R.color.redeemlist_item_color);

+0

यह न सही चाहिए आप ** getColorStateList ** विधि ** getColor ** है, और नहीं। – Leeeeeeelo

37

आप getColorStateList()

उपयोग करने के लिए मैं भी इस समस्या के साथ संघर्ष कर रहा था, तो आप उपयोग एक state list करना चाहते है, तो आप drawable फ़ोल्डर की बजाय color संसाधन फ़ोल्डर में ऐलान करते हैं और उपयोग करने की आवश्यकता setTextColor(getResources().getColorStateList(R.color.redeemlist_item_color))। ठीक है, शायद मैं बाहर बहुत ज्यादा कोड छोड़ दिया:

+2

यह सही जवाब है। – speedynomads

+0

ColorStateList प्रोग्राम के रूप में स्थापित करने के लिए http://stackoverflow.com/questions/15543186/colorstatelist-android-programatically देखें। –

+0

'संसाधन # (int) getColorStateList' एपीआई स्तर 23. उपयोग या तो 'संसाधन # getColorStateList (पूर्णांक, थीम)' या 'ContextCompat.getColorStateList (संदर्भ, पूर्णांक)' बजाय में पदावनत किया गया था –

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