2011-03-09 16 views
207

मैं एक हेक्सा स्ट्रिंग से एक रंग का उपयोग करना चाहता हूं जैसे कि "#FFFF0000" (कहें) लेआउट के पृष्ठभूमि रंग को बदलें। Color.HSVToColor एक विजेता की तरह दिखता है लेकिन यह पैरामीटर के रूप में float[] लेता है।हेक्साडेसिमल रंग स्ट्रिंग से रंग कैसे प्राप्त करें

क्या मैं समाधान के करीब हूं?

+0

[पूर्णांक में क्रम में एंड्रॉयड रंग स्ट्रिंग परिवर्तित] की संभावित डुप्लिकेट (Xamarin उपयोग http://stackoverflow.com/questions/3849607/converting-android में -color-string-in-runtime-in-int) –

उत्तर

454

प्रयास करें Color वर्ग विधि:

public static int parseColor (String colorString) 

Android दस्तावेज़ से:

समर्थित प्रारूप हैं: #RRGGBB #AARRGGBB 'red', 'ब्लू', 'हरित', 'काली', 'सफेद', 'ग्रे', 'सियान', 'मैजेंटा', 'पीला', 'lightgray', 'darkgray'

+4

कोई भी जानता है कि '000 000 मानों को कैसे पार्स करें? –

+4

हां, बस करें: '' 'अगर (colorString.length() == 4) {colorString =" # "+ StringUtils.repeat (colorString.substring (1, 1), 1) + StringUtils.repeat (colorString.substring (2, 2), 1) + StringUtils.repeat (colorString.substring (3, 3), 1)} '' ', कृपया मुझे सही करें अगर मैं गलत हूं – xdevs23

+3

@ xdevs23 कोड में जोड़ने के लिए, यदि इस स्थिति को बदलें : 'अगर (colorString.length() == 4 && colorString [0] ==' # ') ' – Zac

20

एक int रंग जोमें इस्तेमाल किया जा सकता करने के लिए कनवर्ट करें कि स्ट्रिंगऔर setTextColor

String string = "#FFFF0000"; 
int color = Integer.parseInt(string.replaceFirst("^#",""), 16); 

16 का मतलब यह हेक्साडेसिमल है और अपने नियमित नहीं 0-9। परिणाम के रूप में

int color = 0xFFFF0000; 
+0

मैं स्ट्रिंग रंग =" 80000000 "कैसे परिवर्तित कर सकता हूं; int रंग = करने के लिए? –

+0

मुझे लगता है कि स्ट्रिंग संस्करण '# 80000000' होना चाहिए, जिस स्थिति में int संस्करण' int color = 0x80000000; 'होगा।यदि यह काम नहीं करता है तो अधिक जानकारी के साथ एक [नया प्रश्न] (http://stackoverflow.com/questions/ask) पोस्ट करें ताकि मेरे से अधिक लोग इसे देखेंगे। ध्यान रखें '# 80000000' एक पारदर्शी काला रंग है। –

+0

मुझे पता है कि int int color = 0x80000000 होगा लेकिन मेरी समस्या यह है कि इसे कैसे परिवर्तित करें ... लेकिन अब मैं अपनी समस्या को int color = parsecolor ("#" + "80000000") के साथ हल कर दूंगा; ... उत्तर के लिए धन्यवाद । –

4

एक ही होना चाहिए बजाय 0xFFF000 उपयोग करने का प्रयास और Color.HSVToColor विधि में पारित कि।

+2

मुझे उम्मीद है कि आपको उस तीसरे एफ को शून्य के साथ बदलना चाहिए। ओपी में, मुझे लगता है कि पहले दो एफ अक्षर अस्पष्टता सेट करने के लिए उपयोग किए जाते हैं। –

9

मैं इसका उपयोग करता हूं और यह मेरे लिए इच्छित रंग सेट करने के लिए मेरे लिए बहुत अच्छा काम करता है।

public static final int MY_COLOR = Color.rgb(255, 102, 153); 

के लिए 0-255 का उपयोग कर रंग सेट प्रत्येक लाल, हरे और नीले रंग की तो कहीं भी आप Color.BLUE या Color.RED या अन्य स्थिर रंग रंग वर्ग के किसी भी करने के बजाय सिर्फ डाल MY_COLOR इस्तेमाल किया है कि रंग चाहते हैं प्रदान करता है।

बस रंग चार्ट के लिए Google खोज करें और यह आप 0-255 का उपयोग कर सही आरजीबी कोड के साथ एक चार्ट पा सकते हैं।

175

प्रयास करें:

myLayout.setBackgroundColor(Color.parseColor("#636161")); 
+2

यदि आप xamarin का उपयोग कर रहे हैं .. कोड यह एंड्रॉइड है। ग्राफिक्स.कोलर। पर्सकोलर ("# 636161") "पी" के साथ ऊपरी –

5

एक्सएमएल फ़ाइल res/values ​​/ रंग में बचा लिया।xml:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <color name="opaque_red">#f00</color> 
    <color name="translucent_red">#80ff0000</color> 
</resources> 

यह आवेदन कोड को पुन: प्राप्त रंग संसाधन: यदि आप अपने XML में एक रंग को परिभाषित करने और यदि

<TextView 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:textColor="@color/translucent_red" 
    android:text="Hello"/> 
3

:

Resources res = getResources(); 
int color = res.getColor(R.color.opaque_red); 

यह लेआउट एक्सएमएल एक विशेषता में रंग लागू पृष्ठभूमि रंग या कुछ ऐसा बदलने के लिए इसका उपयोग करना चाहते हैं, यह एपीआई वह है जिसे आप ढूंढ रहे हैं:

((TextView) view).setBackgroundResource(R.drawable.your_color_here); 

मेरी नमूने में मैं TestView

लिए इसका इस्तेमाल किया
9

इस प्रयास करें:

vi.setBackgroundColor(Color.parseColor("#FFFF0000")); 
13

यह

int color = Color.parseColor("colorstring"); 
12

यह सवाल हेक्स रंग तो मैं लूंगा से संबंधित खोजों की एक संख्या के लिए ऊपर आता है यहां एक सारांश जोड़ें।

पूर्णांक

हेक्स रंग से रंग रूप ले RRGGBB या AARRGGBB (अल्फा, लाल, हरे, नीले,)। मेरे अनुभव में, int का उपयोग करते समय, आपको पूर्ण AARRGGBB फ़ॉर्म का उपयोग करने की आवश्यकता है। यदि आपके पास केवल RRGGBB फ़ॉर्म है तो अल्फा (पारदर्शिता) पूरी तरह से अपारदर्शी बनाने के लिए बस इसे FF से उपसर्ग करें। यहां बताया गया है कि आप इसे कोड में कैसे सेट करेंगे। शुरुआत में 0x का उपयोग करते हुए यह षोडश आधारी और नहीं आधार 10.

int myColor = 0xFF3F51B5; 
myView.setBackgroundColor(myColor); 

रंग स्ट्रिंग

से

के रूप में दूसरों का उल्लेख किया है, तो आप उपयोग कर सकते हैं Color.parseString है की तरह तो

int myColor = Color.parseColor("#3F51B5"); 
myView.setBackgroundColor(myColor); 

नोट स्ट्रिंग इसका मतलब है कि # से शुरू होना चाहिए। RRGGBB और AARRGGBB दोनों प्रारूप समर्थित हैं।

एक्सएमएल से XML

आप वास्तव में अपने रंग हो रही किया जाना चाहिए से रंग जब भी संभव हो। यह अनुशंसित विकल्प है क्योंकि यह आपके ऐप में रंग परिवर्तन करना अधिक आसान बनाता है। यदि आप अपने पूरे कोड में बहुत सारे हेक्स रंग सेट करते हैं तो बाद में उन्हें बदलने की कोशिश करने के लिए यह एक बड़ा दर्द है।

एंड्रॉइड सामग्री डिज़ाइन में पहले से कॉन्फ़िगर किए गए हेक्स मानों के साथ रंग ताल हैं।

ये विषय रंग आपके एप्लिकेशन को भर में इस्तेमाल किया और इस तरह दिखेगा रहे हैं:

रंग।एक्सएमएल

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <color name="primary">#3F51B5</color> 
    <color name="primary_dark">#303F9F</color> 
    <color name="primary_light">#C5CAE9</color> 
    <color name="accent">#FF4081</color> 
    <color name="primary_text">#212121</color> 
    <color name="secondary_text">#757575</color> 
    <color name="icons">#FFFFFF</color> 
    <color name="divider">#BDBDBD</color> 
</resources> 

आप अतिरिक्त रंग की जरूरत है, एक अच्छा अभ्यास का पालन करने के लिए xml में दो चरणों में अपने रंग को परिभाषित करने के लिए है। पहले हेक्स वैल्यू रंग का नाम दें और फिर अपने ऐप के एक घटक को नाम दें जिसे एक निश्चित रंग मिलना चाहिए। इससे रंगों को बाद में समायोजित करना आसान हो जाता है। फिर, यह रंगों में है। Xml

<color name="orange">#fff3632b</color> 
<color name="my_view_background_color">@color/orange</color> 

फिर जब आप कोड में रंग सेट करना चाहते हैं, निम्न कार्य करें:

int myColor = ContextCompat.getColor(context, R.color.my_view_background_color);  
myView.setBackgroundColor(myColor); 

एंड्रॉयड पूर्वनिर्धारित रंग

रंग वर्ग पूर्वनिर्धारित रंग स्थिरांक की एक संख्या के साथ आता है। आप इसे इस तरह इस्तेमाल कर सकते हैं।

int myColor = Color.BLUE; 
myView.setBackgroundColor(myColor); 

अन्य रंग हैं

  • Color.BLACK
  • Color.BLUE
  • Color.CYAN
  • Color.DKGRAY
  • Color.GRAY
  • Color.GREEN
  • Color.LTGRAY
  • Color.MAGENTA
  • Color.RED
  • Color.TRANSPARENT
  • Color.WHITE
  • Color.YELLOW

नोट्स

  • हेक्स रंग खोजने का एक त्वरित तरीका गिंप (या कुछ अन्य फोटो संपादन सॉफ्टवेयर) में रंग चयनकर्ता संवाद खोलना है।
  • Standard opacity levels in Material Design
0

इस

Control.SetBackgroundColor(global::Android.Graphics.Color.ParseColor("#F5F1F1")); 
संबंधित मुद्दे