2012-12-12 16 views
28

मैं जानना चाहता हूं कि बटन रंग को प्रोग्रामिक रूप से कैसे सेट करें? निम्नलिखित मैं कोडित है, लेकिन विफल रहता है:एंड्रॉइड सेट बटन पृष्ठभूमि प्रोग्रामेटिक

Button11.setBackgroundColor(R.color.red); 

धन्यवाद !!

+2

आप किस प्रभाव को प्राप्त करने की कोशिश कर रहे हैं? कोई अतिरिक्त प्रभाव के साथ एक सादा लाल आयताकार? यदि नहीं, तो आपको अपने बाद के किसी भी पीएनजी (9 पैच) या एक्सएमएल में परिभाषित कुछ हासिल करने के लिए कुछ प्रकार की आकर्षित करने की आवश्यकता होगी। सिस्टम को एक बटन बनाने के लिए कोई रास्ता नहीं बनाया गया है जो एक अलग रंग को छोड़कर सामान्य बटन की तरह दिखता है। आपको अपना संसाधन तब तक प्रदान करना होगा जब तक आप केवल एक सादे एकल रंग के आयत की तलाश नहीं कर रहे हों। – FoamyGuy

+0

वास्तव में मैं जो कर रहा हूं वह यह है कि 12 बटनों की एक तालिका से, कार्यक्रम यादृच्छिक रूप से परिभाषित पाठ को भरने के लिए उनमें से 6 का चयन करेगा। मैं इन 6 बटनों को एक और अलग रंग में बदलना चाहता हूं। इस संबंध में, यह xml भाग में नहीं किया जा सकता है लेकिन प्रोग्रामेटिक रूप से हो। मैंने पहले ही कुछ एक्सएमएल परिभाषित कर दिया है (पहले अनदेखा सादा हरा दौर रंग है, अगर चुना गया तो मैं चाहता हूं कि यह सादा लाल रंग का रंग बन जाए) यदि इस तरह से, क्या यह किया जा सकता है? – pearmak

+2

दाएं लेकिन आपको या तो 9patch png जैसे लाल बटन छवि की आवश्यकता है, या आपको xml में लाल बटन आकार को परिभाषित करने की आवश्यकता होगी। यदि आप पृष्ठभूमि रंग को लाल रंग में बदलते हैं तो आप एक सादे लाल आयताकार के साथ समाप्त होने जा रहे हैं जो सामान्य बटन की तरह दिखता है। – FoamyGuy

उत्तर

60

R.color.red एक आईडी है (जो एक int भी है), लेकिन यह रंग नहीं है।

उपयोग में से एक के बजाय निम्नलिखित:

// If you're in an activity: 
Button11.setBackgroundColor(getResources().getColor(R.color.red)); 
// OR, if you're not: 
Button11.setBackgroundColor(Button11.getContext().getResources().getColor(R.color.red)); 

या, वैकल्पिक रूप से:

Button11.setBackgroundColor(Color.RED); // From android.graphics.Color 

या, अधिक समर्थक कौशल के लिए:

Button11.setBackgroundColor(0xFFFF0000); // 0xAARRGGBB 
+0

के बजाय' Button.setBackgroundResource() 'चाहते हैं, मैं प्रोग्राम किए गए एक से अधिक बटन के लिए अलग-अलग रंग कैसे सेट करूं? – JUL2791

+2

लेकिन यह सीमाओं या गोलाकार कोनों की तरह सभी शैलियों को मिटा देता है। तो यह वास्तव में बटन क्षेत्र के लिए रंग सेट करता है, ओपी जैसे बटन रंग नहीं। –

+2

ध्यान दें कि 'getcolor() 'अब बहिष्कृत है। 'ContextCompat' का उपयोग करें http://stackoverflow.com/a/32149275/1358777 –

0
button.setBackgroundColor(getResources().getColor(R.color.red); 

सेट पृष्ठभूमि रंग इस विचार के लिए। पैरामीटर्स: पृष्ठभूमि का रंग

R.color.red जेन में संकलन में उत्पन्न एक संदर्भ है।

26

पुराना धागा, लेकिन कुछ नया सीखा, उम्मीद है कि यह किसी की मदद कर सकता है।

यदि आप पृष्ठभूमि रंग बदलना चाहते हैं लेकिन अन्य शैलियों को बनाए रखना चाहते हैं, तो नीचे मदद कर सकते हैं।

button.getBackground().setColorFilter(ContextCompat.getColor(this, R.color.colorAccent), PorterDuff.Mode.MULTIPLY); 
+0

'setColorFilter' केवल मौजूदा पृष्ठभूमि में एक टिंट सेट करता है। यह एक नया पृष्ठभूमि रंग सेट नहीं करता है। –

+5

यदि आप भौतिक शैली उठाए गए बटन का उपयोग कर रहे हैं, तो यह वही काम करेगा। नहीं 'बटन .setBackgroundcolor() '। – fahmy

+1

यह 2017 अब है और संसाधन से रंग सेट करने के लिए बॉयलरप्लेट के इस पूरे समूह को लिखने के लिए अभी भी बहुत बदसूरत है ... –

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