कोड में TextView का टेक्स्ट रंग कैसे सेट करें?


544

एक्सएमएल में, हम textColorविशेषता द्वारा एक टेक्स्ट रंग सेट कर सकते हैं , जैसे android:textColor="#FF0000"। लेकिन मैं इसे कोडिंग द्वारा कैसे बदल सकता हूं?

मैंने कुछ इस तरह की कोशिश की:

holder.text.setTextColor(R.color.Red);

जहां holderसिर्फ एक वर्ग है और textप्रकार का है TextView। रेड स्ट्रिंग्स में सेट एक RGB वैल्यू (# FF0000) है।

लेकिन यह लाल के बजाय एक अलग रंग दिखाता है। हम किस प्रकार के पैरामीटर को setTextColor () में पास कर सकते हैं? प्रलेखन में, यह कहता है int, लेकिन क्या यह संसाधन संदर्भ मूल्य है या कुछ और है?


यूआई को कोड में ट्विक करने के बारे में ध्यान दें, कृपया डिजाइन समय में यूआई को देखने के फायदों पर विचार करें, रनटाइम में न्यूनतम परिवर्तन करें।
एलिकएल्ज़िन-किलाका

जवाबों:


1244

आपको उपयोग करना चाहिए:

holder.text.setTextColor(Color.RED);

Colorपाठ्यक्रम का समान प्रभाव पाने के लिए आप कक्षा से विभिन्न कार्यों का उपयोग कर सकते हैं ।

  • Color.parseColor (मैनुअल) (जैसे लक्स उपयोग करता है)

    text.setTextColor(Color.parseColor("#FFFFFF"));
  • Color.rgbऔर Color.argb( मैनुअल आरजीबी ) ( मैनुअल ARGB ) (गणपति का उपयोग करता है की तरह)

    holder.text.setTextColor(Color.rgb(200,0,0));
    holder.text.setTextColor(Color.argb(0,200,0,0));
  • और हां, अगर आप किसी XMLफ़ाइल में अपने रंग को परिभाषित करना चाहते हैं, तो आप ऐसा कर सकते हैं:

    <color name="errorColor">#f00</color>

    क्योंकि getColor()फ़ंक्शन 1 पदावनत है , तो आपको इसका उपयोग करने की आवश्यकता है:

    ContextCompat.getColor(context, R.color.your_color);
  • आप सादा HEX भी डाल सकते हैं, जैसे:

    myTextView.setTextColor(0xAARRGGBB);

    जहां आपके पास पहले एक अल्फा-चैनल है, फिर रंग मूल्य।

पूरी तरह से मैनुअल की जाँच करें, सार्वजनिक वर्ग रंग वस्तु का विस्तार करता है


1 यह कोड यहाँ भी हुआ करता था:

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

यह विधि अब एंड्रॉइड एम में पदावनत है। हालांकि आप इसे समर्थन लाइब्रेरी में संदर्भ.कॉम से उपयोग कर सकते हैं , जैसा कि अब उदाहरण दिखाता है।


2
इसके अलावा, यदि पाठ एक कड़ी है तो आपको text.setLinkTextColor (...) का उपयोग करने की आवश्यकता है; कोड या Android में: textColorLink = "..." XML में
WOUNDEDStevenJones

1
@Nanne अच्छा होगा यदि आपके उत्तर में यह भी उल्लेख किया गया है कि R.color.XXX रंग का संदर्भ है। मतलब यह है कि इसे स्पष्ट करने के लिए (इसे आपके उदाहरण में है) के रूप में परिभाषित किया जाना चाहिए।
नयार

मुझे नहीं पता तुम्हारा क्या मतलब है? के रूप में, dereferenced और इसलिए अधिक संसाधनों का उपयोग करेगा या आप कुछ और मतलब है?
नन्ने

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

6
getColor(int)पदावनत किया गया है।
RestInPeace

137

यदि आप अभी भी अपनी XML फ़ाइल में अपने रंग निर्दिष्ट करना चाहते हैं:

<color name="errorColor">#f00</color>

फिर इसे अपने कोड में इन दो तरीकों में से एक के साथ देखें:

textView.setTextColor(getResources().getColor(R.color.errorColor, getResources().newTheme()));    

या

textView.setTextColor(getResources().getColor(R.color.errorColor, null));

यदि आप Android M के खिलाफ संकलन कर रहे हैं, तो पहला संभवत: बेहतर है, हालाँकि आप जिस विषय से गुजरते हैं वह अशक्त हो सकता है, इसलिए शायद यह आपके लिए आसान हो?

और अगर आप कम्पैटिबल लाइब्रेरी का उपयोग कर रहे हैं तो आप कुछ ऐसा कर सकते हैं

textView.setTextColor(ContextCompat.getColor(context, R.color.errorColor));

9
SetTextColor के लिए, इसे प्रत्यक्ष R.color.errorColor संदर्भ के बजाय getResources () .CColor () क्यों लेना पड़ता है? R.color.x लगभग हर दूसरी विधि के लिए काम करता है। अविश्वसनीय रूप से निराशा!
सिविल

8
@Civilian: क्योंकि int param कि setXXXColor () विधियों का उपयोग करने के लिए वास्तविक ARGB मान के रूप में लिया जाता है, संसाधन फ़ाइल में देखने के लिए मान नहीं। अजीब तरह से, दृश्य वर्ग में दोनों setBackgroundColor () और setBackgroundResource () है, जबकि TextView एक setTextResource () विधि याद कर रहा है।
इयान केम्प

1
getColor(int)पदावनत किया गया है। ContextCompat.getColor(getContext(), R.color.yourColor);प्रतिस्थापन लगता है।
RestInPeace

45

और दूसरा:

TextView text = (TextView) findViewById(R.id.text);
text.setTextColor(Color.parseColor("#FFFFFF"));

1
getResources()एक संदर्भ सदस्य कार्य है। एडेप्टर के लिए, का उपयोग करें getContext().getResources()। रंग मानों को संसाधनों में जाना चाहिए, जैसे @ xbakesx के उत्तर में।
C0D3LIC1OU5

40

आप इसे केवल XML फ़ाइल से भी कर सकते हैं।

color.xmlमान फ़ोल्डर में एक फ़ाइल बनाएँ :

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="textbody">#ffcc33</color>

</resources>

फिर किसी भी XML फ़ाइल में, आप टेक्स्ट का उपयोग करके रंग सेट कर सकते हैं,

android:textColor="@color/textbody"

या आप जावा फ़ाइल में इस रंग का उपयोग कर सकते हैं:

final TextView tvchange12 = (TextView) findViewById(R.id.textView2);
//Set color for textbody from color.xml file
tvchange1.setTextColor(getResources().getColor(R.color.textbody));

27

आप उपयोग कर सकते हैं

holder.text.setTextColor(Color.rgb(200,0,0));

आप यह भी निर्दिष्ट कर सकते हैं कि आप ट्रांसपेरेंसी के साथ कौन सा रंग चाहते हैं।

holder.text.setTextColor(Color.argb(0,200,0,0));

एक के लिए अल्फा (पारदर्शी) मूल्य आर-लाल जी-हरा बी-नीला


15

लेआउट में निम्न कोड का उपयोग करें। xml

<TextView  android:id="@+id/textView1"    
android:layout_width="wrap_content"    
android:layout_height="wrap_content" 
android:text="@string/add"
android:layout_marginTop="16dp"
android:textAppearance="?
android:attr/textAppearanceMedium"
android:textColor="#25383C"
android:textSize="13sp" />

<TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/add"
        android:layout_marginTop="16dp"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:textColor="#25383C"
        android:textSize="13sp" />

15

पाठ दृश्य पर रंग सेट करने के कई अलग-अलग तरीके हैं।

  1. स्टूडियो रेस में रंग मूल्य जोड़ें-> मान-> color.xml के रूप में

    <color name="color_purple">#800080</color>

    अब xml या एक्टिविटी क्लास में रंग सेट करें

    text.setTextColor(getResources().getColor(R.color.color_purple)
  2. यदि आप कलर कोड को सीधे Color.parseColor कोड के नीचे उपयोग करना चाहते हैं

    textView.setTextColor(Color.parseColor("#ffffff"));   
  3. आप RGB का उपयोग भी कर सकते हैं

    text.setTextColor(Color.rgb(200,0,0));
  4. टेक्स्टव्यू के लिए डायरेक्ट हेक्सकोड का उपयोग भी कर सकते हैं। आप सादा HEX भी डाल सकते हैं, जैसे:

    text.setTextColor(0xAARRGGBB);
  5. आप अल्फा वैल्यू वाले आरजीबी का उपयोग भी कर सकते हैं।

       text.setTextColor(Color.argb(0,200,0,0));

    एक के लिए अल्फा (पारदर्शी) वी।

  6. और अगर आप कम्पैटिबल लाइब्रेरी का उपयोग कर रहे हैं तो आप कुछ ऐसा कर सकते हैं

       text.setTextColor(ContextCompat.getColor(context, R.color.color_purple));

9

मैं आम तौर पर किसी भी दृश्य के लिए ऐसा करता हूं:

myTextView.setTextColor(0xAARRGGBB);

कहाँ पे

  • AA अल्फा को परिभाषित करता है (अपारदर्शी के लिए पारदर्शी, FF के लिए 00)

  • RRGGBB सामान्य HTML रंग कोड को परिभाषित करता है (जैसे लाल रंग के लिए FF0000)।


और क्यों डाउन वोट? क्या आप कृपया इस पर कुछ विचार जोड़ सकते हैं?
AW

7

यदि आप setTextAppearance का उपयोग करने की योजना बनाते हैं, तो आपको पता होना चाहिए कि यह विषय से विरासत में मिली शैली के साथ पाठ के रंग को अधिलेखित कर देगा। इसलिए यदि आप दोनों का उपयोग करना चाहते हैं, तो बाद में रंग सेट करें ।

यह काम:

textView.setTextAppearance(context, android.R.style.TextAppearance_Medium);
textView.setTextColor(Color.RED);

हालांकि इससे आपका टेक्स्ट कलर उदाहरण के लिए सफेद (डार्क थीम के लिए) या ब्लैक (लाइट थीम के लिए) होगा:

textView.setTextColor(Color.RED);
textView.setTextAppearance(context, android.R.style.TextAppearance_Medium);

एक्सएमएल में इसके विपरीत आदेश मनमाना है।


7
textView.setTextColor(ContextCompat.getColor(getApplicationC‌​ontext(),R.color.col‌​orWhite)); 

में colors.xmlफ़ाइल, नीचे दिए गए कोड में लिखें:

<color name="colorWhite">#FFFFFF</color>

6

मेरा मानना ​​है कि यदि आप एक संसाधन ( XML फ़ाइल में) के रूप में एक रंग निर्दिष्ट करना चाहते हैं , तो आपको उसका एआरजीबी मूल्य (केवल आरजीबी मूल्य नहीं) प्रदान करना होगा।

अपना रंग मान बदलने का प्रयास करें #FFFF0000। यह आपको लाल देना चाहिए।


मेरे अनुभव के लिए, यह सच नहीं है और ARGB मूल्य के बजाय RGB मान का उपयोग करना संभव है
slinden77

6

text.setTextColor(getResource().getColor(R.color.black)) आपने color.xml में काला रंग बनाया है।

या

text.setTextColor(Color.parseColor("#000000")) यहाँ वांछित हेक्सकोड टाइप करें

या

text.setTextColor(Color.BLACK) आप स्थैतिक रंग क्षेत्रों का उपयोग कर सकते हैं




4

एडाप्टर का उपयोग करके आप इस कोड का उपयोग करके टेक्स्ट का रंग सेट कर सकते हैं:

holder.text_view = (TextView) convertView.findViewById(R.id.text_view);
holder.text_view.setTextColor(Color.parseColor("#FF00FF"));

4
TextView text = new TextView(context);
text.setTextColor(Color.parseColor("any hex value of a color"));

ऊपर कोड मेरी तरफ से काम कर रहा है। यहाँ textएक TextView है जिस पर रंग सेट करने की आवश्यकता है।



2

एपीआई 23 से आगे, getResources().getColor()पदावनत है।

इसके बजाय इसका उपयोग करें:

textView.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.color_black));


1

एडाप्टर में आप इस कोड का उपयोग करके टेक्स्ट का रंग सेट कर सकते हैं:

holder.my_text_view = (TextView) convertView.findViewById(R.id.my_text_view);
holder.my_text_view.setTextColor(Color.parseColor("#FFFFFF"));

1

अगर आप सीधे कलर कोड देना चाहते हैं तो उपयोग करें

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

या यदि आप रंगों के फोल्डर से कलर कोड देना चाहते हैं तो उपयोग करें

textView.setTextColor(R.color.white);

यह कोड textView.setTextColor (R.color.white); काम नहीं करता है। आप अपने color.xml से रंग प्राप्त करने के लिए text.setTextColor (getResources ()। GetColor (R.color.color_purple) का उपयोग कर सकते हैं
Gian Gomen

1

एक TextView का रंग सेट करने के लिए, TextView.setTextColor(R.color.YOURCOLOR)पर्याप्त नहीं है!

इसे इस तरह इस्तेमाल करना होगा -

TextView myText = (TextView) findViewById(R.id.YoutTextViewID);

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

या

myText.setTextColor(Color.parseColor("#54D66A"));


0

इसी तरह, मैं उपयोग कर रहा था color.xml:

<color name="white">#ffffff</color>
    <color name="black">#000000</color>   

TextViewपृष्ठभूमि सेट करने के लिए जैसे:

textView.setTextColor(R.color.white);

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

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

0

मैंने इस तरह किया: XML फाइल बनाएँ, जिसे कलर्स इन रिस / वैल्यू फ़ोल्डर कहा जाता है।

मेरे रंग .xml:

    <?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="vermelho_debito">#cc0000</color>
    <color name="azul_credito">#4c4cff</color>
    <color name="preto_bloqueado">#000000</color>
    <color name="verde_claro_fundo_lista">#CFDBC5</color>
    <color name="branco">#ffffff</color>
    <color name="amarelo_corrige">#cccc00</color>
    <color name="verde_confirma">#66b266</color>
</resources>

Xml फ़ाइल से इस रंग को प्राप्त करने के लिए, मैंने इस कोड का उपयोग किया है: यह एक टेक्स्ट व्यू है, और यह एक संदर्भ वस्तु है। मैं इसे किसी गतिविधि से उपयोग नहीं कर रहा हूं, बल्कि एक ListView करने के लिए एक बेस एडेप्टर। इसलिए मैंने इस Context Object का उपयोग किया है।

valor.setTextColor(ctx.getResources().getColor(R.color.azul_credito));

आशा है ये मदद करेगा।


0

आरजीबी मूल्य प्रदान text.setTextColor(Color.rgb(200,0,0));
करने के लिए: हेक्स मूल्य से रंग पार्स करने के लिए: text.setTextColor(Color.parseColor("#FFFFFF"));


0

यदि आप एक एडेप्टर में हैं और फिर भी संसाधनों में परिभाषित रंग का उपयोग करना चाहते हैं, तो आप निम्नलिखित दृष्टिकोण आज़मा सकते हैं:

holder.text.setTextColor(holder.text.getContext().getResources().getColor(R.color.myRed));

0
TextView textresult = (TextView)findViewById(R.id.textView1);
textresult.setTextColor(Color.GREEN);

0

getColor () पदावनत है

तो इस तरह आजमाएं:

 tv_title.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.sf_white));

0

मैं एक पुनर्नवीकरण के लिए एक ViewHolder में एक TextView के लिए यह कर रहा था। मुझे यकीन नहीं है कि ऐसा क्यों है, लेकिन यह मेरे लिए ViewHolder आरंभीकरण में काम नहीं किया।

public ViewHolder(View itemView) {
    super(itemView);
    textView = (TextView) itemView.findViewById(R.id.text_view);
    textView.setTextColor(context.getResources().getColor(R.color.myColor));
    // Other stuff
}

लेकिन जब मैंने इसे onBindViewHolder में स्थानांतरित किया, तो यह ठीक काम किया।

public void onBindViewHolder(ViewHolder holder, int position){
    // Other stuff
    holder.textView.setTextColor(context.getResources().getColor(R.color.myColor));
}

आशा है कि यह किसी की मदद करता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.