2011-05-30 13 views
63

काम नहीं कर रहा है (कोई एक ListView, बस माता-पिता के लिए उन्हें जोड़ने) इस तरह के तत्वों की:TextView setTextColor() मैं प्रोग्राम के रूप में एक सूची बना

<LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" 
    android:orientation="vertical" android:layout_weight="1"> 
    <TextView android:id="@+id/filiale_name" 
    android:layout_width="fill_parent" android:layout_height="wrap_content"/> 
    <TextView android:id="@+id/lagerstand_text" 
    android:layout_width="fill_parent" android:layout_height="wrap_content" 
    android:textSize="10sp" android:textColor="@color/red"/> 
</LinearLayout> 

इसके अलावा, मैं मूल्यों में कुछ रंग को परिभाषित किया है/colors.xml । जैसा कि आप देखते हैं, आईडी "lagerstand_text" के साथ टेक्स्ट व्यू ने डिफ़ॉल्ट रूप से लाल रंग को लाल रंग में सेट कर दिया है। यह काम करता है।

जब जावा में तत्वों बनाने, मैं

lagerstandText.setText("bla"); 

और कुछ तत्वों के लिए क्या मैं भी

lagerstandText.setTextColor(R.color.red); 

और अन्य रंग है। जबकि जिन तत्वों पर मैं setTextColor() को कॉल नहीं करता हूं, वे लाल होते हैं, अन्य सभी ग्रे होते हैं, इससे कोई फर्क नहीं पड़ता कि मैंने कौन सा रंग चुना है (भले ही यह एक ही लाल हो)।

वह क्यों है?

+0

तो मेरा जवाब के लिए helpfukl है आप उत्तर –

उत्तर

188

प्रलेखन इस बारे में बहुत verbose नहीं है, लेकिन आप setTextColor पर कॉल करते समय केवल R.color पूर्णांक का उपयोग नहीं कर सकते हैं। रंग को ठीक से सेट करने के लिए आपको getResources().getColor(R.color.YOURCOLOR) पर कॉल करने की आवश्यकता है।

उपयोग प्रोग्राम के रूप में अपने पाठ का रंग सेट करने के लिए निम्नलिखित:

textView.setTextColor(getResources().getColor(R.color.YOURCOLOR)); 

समर्थन पुस्तकालय 23 आप निम्नलिखित कोड का उपयोग करने के साथ शुरू है, क्योंकि getColor अब मान्य नहीं है:

textView.setTextColor(ContextCompat.getColor(context, R.color.YOURCOLOR)); 
+2

ठीक से स्वीकार कर सकते हैं, यह काम करता है। इस मामले में एपीआई दस्तावेज थोड़ा और वर्बोज़ हो सकता है ... –

+12

भी आप रंग का उपयोग कर सकते हैं। (यहां लाल हरा काला नीला पीला और अन्य) setTextColor (Color.RED) – Peter

+0

जानकारी के लिए धन्यवाद ... लेकिन यह मिलता है स्रोत() मुझे संदर्भों की एक श्रृंखला पास करता है। वैश्विक संसाधनों तक पहुंचने के लिए कुछ बेहतर तरीका होना चाहिए। – Umair

31

तो, इस कार्य को प्राप्त करने के कई तरीके हैं।

1.

int color = Integer.parseInt("bdbdbd", 16)+0xFF000000); 
textview.setTextColor(color); 

2.

textView.setTextColor(getResources().getColor(R.color.some_color)); 

3.

textView.setTextColor(0xffbdbdbd); 

4 ।

textView.setTextColor(Color.parseColor("#bdbdbd")); 

5.

textView.setTextColor(Color.argb(a_int, r_int, g_int, b_int)); 
+0

क्या पता लगाने का कोई तरीका है यदि कोई विशेष रंग मान टेक्स्ट गायब होने जा रहा है? –

+0

@ क्रिस्टोफर मैसर समझ में नहीं आता कि आप क्या कहना चाहते हैं ??? – duggu

+0

मैं setTextColor (रंग) का उपयोग करने से पहले रंग की चमक समायोजित कर रहा हूं। कुछ अज्ञात मामलों में टेक्स्ट व्यू बस डिवाइस (पृष्ठभूमि से स्वतंत्र) पर गायब हो जाता है। मैं सेट टेक्स्टकोलर (रंग) में इसका उपयोग करने से पहले "रंग" मान्य रंग मान है या नहीं, यह जांचने के लिए एक परीक्षण फ़ंक्शन लिखना चाहता हूं। –

0

एक विशेष रंग (XML लेआउट में परिभाषित) R वर्ग में परिभाषित के लिए पूर्णांक आईडी View वर्ग के setTextColor() विधि के लिए एक पैरामीटर के रूप में पारित नहीं किया जा सकता। आप निम्न कोड पंक्ति द्वारा setTextColor() के पैरामीटर प्राप्त करना होगा:

int para=getResources().getColor(R.color.your_color,null); 
view.setTextColor(para,null); 

विधि getColor(int id) मूल्यह्रास किया गया है ... बजाय ऊपर कोड की पंक्ति में के रूप में getColor(int id,Resources.Theme theme) का उपयोग करें।

String color = getString(Integer.parseInt(String.valueOf(R.color.my_color))); 
my_textView.setTextColor(Color.parseColor(color)); 

इस तरह आप अपने रंग संसाधन का उपयोग कर सकते हैं:

The `second parameter(theme)` can be null 
1

भविष्य में संदर्भ के लिए, आप का पालन कर सकते हैं।

2

1. मानक रंग जो आप पसंद करते हैं कृपया नीचे जाएं।

textview.setTextColor(Color.select_color) 

2.here custwom रंग color.xml फ़ाइल में इसे जोड़ने का उपयोग करना चाहते

textview.setTextColor(getResources().getColor(R.color.textbody)); 

या

textView.setTextColor(Color.parseColor("#000000")); 

या

subText.setTextColor(Color.rgb(255,192,0)); 
संबंधित मुद्दे