2013-01-16 7 views
11

मुझे पृष्ठभूमि रंग के रूप में आवश्यक रंग के साथ एक साधारण Drawable ऑब्जेक्ट बनाने की आवश्यकता है, लेकिन मुझे नहीं पता कि मैं XML स्कीमा का उपयोग किये बिना प्रोग्रामेटिक रूप से इसे कैसे कर सकता हूं (क्या यह वास्तव में संभव है?)। कृपया, मुझे बताएं, मुझे LayerDrawable बनाने और SeekBar (SeekBar प्रोग्रामिंग की पृष्ठभूमि बदलकर) के साथ काम करने की आवश्यकता है। पहले ही, आपका बहुत धन्यवाद।प्रोग्राम किए गए आवश्यक पृष्ठभूमि रंग के साथ एक ड्रायबल कैसे बनाएं?

उत्तर

29

आपको ColorDrawable का उपयोग करने का प्रयास करना चाहिए। इसे कन्स्ट्रक्टर ColorDrawable(int color)

+0

धन्यवाद । लेकिन कृपया, मुझे बताएं, मैं ड्रायबल के लिए आईडी कैसे सेट कर सकता हूं? मुझे एक नए ड्रॉबल – user1841247

+1

के लिए "एंड्रॉइड: आईडी/पृष्ठभूमि" सेट करने की आवश्यकता है, मुझे समझ में नहीं आता कि आप क्या करने की कोशिश कर रहे हैं। आपको आईडी के लिए क्या चाहिए? आप कन्स्ट्रक्टर 'लेयर ड्रावबल (ड्रायबल [] परतों) का उपयोग करके अपने 'लेयर ड्रावेबल' में 'कलरड्राउबल' जोड़ सकते हैं। ColorDrawable के लिए आपको किसी भी आईडी की आवश्यकता नहीं है। परत की आईडी को 'LayerDrawable.setId (int अनुक्रमणिका, int id)' – Thrakbad

5

ColorDrawable का उपयोग करके रंग के साथ बनाया जा सकता है, आपके मामले में आप मददगार होंगे, आप अपने ड्राइटेबल के लिए पैरामीटर color पास कर सकते हैं।

या आप नीचे की तरह कुछ कर सकते हैं:

ImageView imgStatus = (ImageView) findViewById(R.id.imgInfoIcon); 
// Load the icon as drawable object 
Drawable d = getResources().getDrawable(R.drawable.ic_menu_info_details); 

// Get the color of the icon depending on system state 
int iconColor = android.graphics.Color.BLACK 
if (systemState == Status.ERROR) 
    iconColor = android.graphics.Color.RED 
else if (systemState == Status.WARNING) 
    iconColor = android.graphics.Color.YELLOW 
else if (systemState == Status.OK) 
    iconColor = android.graphics.Color.GREEN 

// Set the correct new color 
d.setColorFilter(iconColor, Mode.MULTIPLY); 

// Load the updated drawable to the image viewer 
imgStatus.setImageDrawable(d); 
कोड ऊपर

मूल रूप here

+0

के साथ सेट किया जा सकता है धन्यवाद। लेकिन कृपया, मुझे बताएं, मैं ड्रायबल के लिए आईडी कैसे सेट कर सकता हूं? मुझे एक नए ड्रॉबल – user1841247

+0

के लिए "एंड्रॉइड: आईडी/पृष्ठभूमि" सेट करने की आवश्यकता है, इस तरह आप रन टाइम पर नहीं जा सकते हैं, फ़ंक्शन बनाने के लिए बेहतर है अपनी दृश्य आईडी पास करें, और अपने दृश्य में उपयुक्त रंग सेट करें। – RobinHood

3

पोस्ट किया जाता है के रूप में यह @Thrakbad ने सुझाव दिया है, तो आप ColorDrawable उपयोग कर सकते हैं:

TextView textView = new TextView(this); 
    ColorDrawable colorDrawable = new ColorDrawable(0xFFFF0000); 
    textView.setBackgroundDrawable(colorDrawable); 
संबंधित मुद्दे