Android TextView: बैकग्राउंड कलर को गतिशील रूप से सेट करने से काम नहीं चलता है


169

एंड्रॉइड के पृष्ठभूमि रंग को प्रोग्रामेटिक रूप से सेट करना TextViewकाम नहीं करता है। मुझे कुछ याद आ रहा है!

TextView et = new TextView(activity);
et.setText("350");
et.setBackgroundColor(R.color.white);

मेरे रेज / वैल्यू फोल्डर में यह फाइल (color.xml) भी है

<resources>
        <color name="white">#ffffffff</color>
        <color name="black">#ff000000</color>
</resources>

[संपादित करें]: इसके अलावा, टेक्स्ट का रंग सेट करने से TextView गायब हो जाता है।

TextView c1 = new TextView(activity);
c1.setTextColor(R.color.solid_red);
c1.setText("My Text");

जवाबों:


332

उपयोग et.setBackgroundResource(R.color.white);


5
Android एपीआई वास्तव में कुछ है, यह एक त्रुटि क्यों नहीं फेंक सकता है?
तवानी

53
क्योंकि यह कोई त्रुटि नहीं है। setBackgroundColor () संख्यात्मक रूप में एक रंग लेता है (जैसे, लाल के लिए 0xFFFF0000)। R.color.white भी एक संख्या है।
कॉमन्सवेअर

6
डी 'ओह! यह निश्चित रूप से सर्वव्यापी ints के बजाय enums के साथ बेहतर किया जा सकता था। जवाब के लिए धन्यवाद।
वोज्शिएक गॉर्की

2
वे विभिन्न प्रकार के हस्ताक्षर का उपयोग कर सकते हैं! एक ने ColorId और दूसरे ने HexColor या कुछ और कहा। दोनों पूर्णांक हैं, लेकिन वे एक ही प्रकार के

1
बहुत अजीब। दस्तावेज़ीकरण से: संसाधन को पृष्ठभूमि को हटाने के लिए एक खींचने योग्य ऑब्जेक्ट या 0 का उल्लेख करना चाहिए ।
आर्टेम

73

इसे इस्तेमाल करे:

TextView c1 = new TextView(activity);
c1.setTextColor(getResources().getColor(R.color.solid_red));
c1.setText("My Text");

मैं मानता हूं कि एक रंग और संसाधन का एक ही प्रकार होता है, लेकिन मैं इस समाधान को खोजने के लिए कुछ घंटे भी बिताता हूं।


2
मैं अभी इसे पूरी तरह से समझ नहीं पा रहा हूं (आपी डॉक्टर की तलाश में) लेकिन यह काम नहीं करता है, इसलिए धन्यवाद!
CodeJustin.com

धन्यवाद, आपने मुझे कुछ घंटे बचाए हैं! अब जब मैं समाधान जानता हूं, तो यह मेरे लिए समझ में आता है, लेकिन मुझे यकीन है कि मुझे अपने दम पर यह पता लगाने में कुछ घंटे लगेंगे।
FreewheelNat

धन्यवाद। एंड्रॉइड एपीआई वास्तव में कई बार गैर-सहज है।
suDocker

64

लाल रंग सेट करने के लिए:

textView.setBackgroundColor(0xfff00000);

या

<color name="solid_red">#fff00000</color>

textView.setBackgroundResource(R.color.solid_red);

1
बैडमॉन्की के उत्तर को प्रतिध्वनित करने के लिए दिया गया यह अधिक लोकप्रिय उत्तर है, आपने पारदर्शिता के लिए उच्च क्रम बिट्स को गैर शून्य पर सेट किया है। मैं आरजीबी को निर्दिष्ट किए बिना हर समय पकड़ा जाता हूं। पृष्ठभूमि को शुद्ध नीले रंग में सेट करने के लिए, 0xff0000ff का उपयोग करें, न कि 0x0000ff का या यह काम नहीं करेगा।
जॉनीलांबाडा

.Xml में <color> तत्व का मान केवल क्लासिक 6 अंकों के साथ काम करता है: # FF0000
हथियार X

@WeaponX: यह पारदर्शी रंगों (8 अंकों में) के साथ ठीक काम करता है।
कूलमाइंड

@Weapn X फ़ंक्शन एक पूर्णांक, 4 बाइट्स लेता है। 6 हेक्स अंक 3 बाइट्स है।

20

मेरे पास एक समान मुद्दा था जहां मैं अग्रणी अल्फा चैनल पर विचार किए बिना एक संख्यात्मक रंग बना रहा था। अर्थात। mytext.setTextColor(0xFF0000)(सोच यह लाल होगा)। जबकि यह एक लाल रंग है यह 100% पारदर्शी भी है क्योंकि it = 0x00FF0000; सही 100% अपारदर्शी मूल्य है 0xFFFF0000या mytext.setTextcolor(0xFFFF0000)


10

बस इस 1 लाइन कोड ने पृष्ठभूमि को प्रोग्रामेटिक रूप से बदल दिया

tv.setBackgroundColor(Color.parseColor("#808080"));

8

खैर मेरे पास ऐसी स्थिति थी जब वेब सेवा ने "# CC2233" जैसे हेक्स प्रारूप में एक रंग वापस कर दिया था और मैं इस रंग को setBackGroundColor () का उपयोग करके टेक्स्टव्यू पर रखना चाहता था, इसलिए मैंने हेम स्ट्रिंग का इंट वैल्यू प्राप्त करने के लिए एंड्रॉइड कलर क्लास का उपयोग किया और इसे पास किया। उल्लेख समारोह। सब कुछ काम कर गया। यह उदाहरण है:

String myHexColor = "#CC2233";
TextView myView = (TextView) findViewById(R.id.myTextView);
myView.setBackGroundColor(Color.pasrsehexString(myHexColor));

PS ने इस उत्तर को पोस्ट किया क्योंकि अन्य समाधान मेरे लिए काम नहीं करते थे। मुझे आशा है कि यह किसी की मदद करेगा :)


5

यहाँ थोड़ा विस्तार में है,

यदि आप गतिविधि में हैं तो इसका उपयोग करें

textview.setBackground(ContextCompat.getColor(this,R.color.yourcolor));

यदि आप कोड के नीचे खंड उपयोग में हैं

textview.setBackground(ContextCompat.getColor(getActivity(),R.color.yourcolor));

यदि आप recyclerview एडेप्टर में कोड के नीचे उपयोग कर रहे हैं

textview.setBackground(ContextCompat.getColor(context,R.color.yourcolor));

// use holder.textview if you are in onBindviewholder
//here context is passed from fragment

4

इसे सही ढंग से करने के लिए यहां चरण दिए गए हैं:

  1. सबसे पहले, अपने MainActivity.java में TextView का एक उदाहरण घोषित करें:

    TextView mTextView;
  2. कुछ पाठ डायनामिक सेट करें (यदि आप चाहते हैं) निम्नानुसार है:

    mTextView.setText("some_text");
  3. अब, पृष्ठभूमि का रंग सेट करने के लिए, आपको अपने स्वयं के रंग को Res-> मान-> color.xml फ़ाइल में निम्नानुसार परिभाषित करना होगा:

    <resources>
        <color name="my_color">#000000</color>
    </resources>
  4. अब आप पृष्ठभूमि के रूप में गतिशील रूप से सेट करने के लिए अपनी जावा फाइल में "my_color" रंग का उपयोग कर सकते हैं:

    mTextView.setBackgroundResource(R.color.my_color);


3

Color.parseHexColor("17ee27")मेरे लिए काम नहीं किया, इसके बजाय Color.parseColor("17ee27")पूरी तरह से काम किया।


2

ऐसा करने के दो तरीके:

1. रंग में रंग का रंग। xml फ़ाइल की तरह:

<resources>
        <color name="white">#ffffff</color>
</resources>

और यह int गतिविधि जावा वर्ग का उपयोग करें:

et.setBackgroundResource(R.color.white);

2।

et.setBackgroundColor(getResources().getColor(R.color.white));
                or
et.setBackgroundColor(Color.parseColor("#ffffff"));



-10

आप android:textColor= "जो भी टेक्स्ट कलर u देना चाहते हैं उसका उपयोग "xml फाइल में कर सकते हैं जहाँ आपका टेक्स्ट व्यू घोषित किया गया है।


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