2012-05-16 19 views
5

में आकृति सेट का रंग कैसे बदलें, अब समस्या केवल आकार के रंग को सेट करने से शुरू होती है। मैं drawable में एक आयत आकार बनाया औरछविदृश्य

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
     android:shape="rectangle"> 
    <solid android:color="#009600" /> 
    <size android:width="30dp" 
     android:height="30dp" /> 
</shape> 

अब इस

<LinearLayout 
     android:layout_width="0dp" 
     android:layout_height="fill_parent" 
     android:orientation="vertical" 
     android:layout_weight="0.15" 
     android:layout_marginRight="10dp" 
     android:gravity="center_vertical"> 
     <ImageView 
     android:id="@+id/iv_priority" 
     android:src="@drawable/case_priority" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"/> 
</LinearLayout> 

संपादित

मेरे case_priority.xml तरह ImageView के लिए सेट मैं इस आकार का रंग बदलने की जरूरत है । असल में यह रंग वेब सेवा से आ रहा है, और मुझे इसे बदलने की जरूरत है। तो मेरा प्रश्न है: हम इस आकार के रंग को प्रोग्रामेटिक रूप से कैसे बदल सकते हैं। और इसे imageview पर सेट करें। मैं स्टैक ओवरफ्लो में कुछ उदाहरणों से गुजर चुका हूं लेकिन मैं इसे छवि दृश्य में बदलने में सक्षम नहीं हूं। कृपया मदद करें !!!! अग्रिम धन्यवाद।

संपादित करें:

हो सकता है मैं अपने सवाल में स्पष्ट नहीं था, तो बस प्रश्न के शोधन। असल में मेरे पास एक छवि दृश्य है जहां मैंने एक स्रोत सेट किया जो वास्तव में एक ड्रायबल है। डिफ़ॉल्ट रूप से ऊपर दिखाए गए मेरे कोड में इसकी हरा। अब वेब सेवा इस छवि दृश्य का रंग लौटाती है जिसे तदनुसार बदला जाना आवश्यक है, इसलिए मैं इसे रनटाइम के दौरान एक्सएमएल से नहीं बदल सकता, इसलिए मुझे इसे जावा फ़ाइल से बदलना होगा। चूंकि मैं आकार और छवि दृश्य का उपयोग कर रहा हूं, इसलिए .setBackground() यहां बहुत मदद नहीं करेगा। तो इसके लिए संभावित समाधान क्या हो सकता है। उत्तर के लिए धन्यवाद और असुविधा के लिए खेद है।

+0

मेरा उत्तर पढ़ें! – techiServices

+0

हाँ मुझे पता है कि मुझे केवल आपके रास्ते से जाना है, लेकिन आगे बढ़ना नहीं है – Android

उत्तर

10

थैंक्स सभी उत्तरों के लिए। इससे मुझे जवाब देने में मदद मिली।

मेरे लेआउट में मैं android:src="" to android:background="@drawable/case_priority" बदल और मेरे जावा फ़ाइल मैं में एन = इस कोड में शामिल हैं: ->

 Resources res = getResources(); 
     final Drawable drawable = res.getDrawable(R.drawable.case_priority); 
     drawable.setColorFilter(Color.YELLOW, Mode.SRC_ATOP); 
     ImageView img = (ImageView)findViewById(R.id.iv_priority); 
     img.setBackgroundDrawable(drawable); 

यह है कि। उम्मीद है कि यह कोई होगा।

+0

यदि आप 'ImageView'' की' 'src'' विशेषता को आकार निर्दिष्ट करते हैं, तो इस पर पहुंचने का एक आसान तरीका है। मेरा जवाब देखें –

+0

@ ब्लैक डेविल, बिल्कुल सही समाधान। यह ठीक से काम कर रहा है। –

+0

यह एक आसान और उपयोगी समाधान है, धन्यवाद। –

3

संपादित करें 1 छवि को देखने के लिए

android:background="#152" // or some other color code 

इस जोड़ें: कोड के साथ यह करने के लिए कि यह

ImageView.setBackgroundColor(Color.parseColor("red")); // Or any color code like #000 , #987 

संपादित करें 2:

ImageView Imgs = (ImageView) findViewById(R.id.iv_priority); 

Imgs.setBackgroundColor(Color.parseColor("ColorCode")); 
+1

उत्तर सर के लिए धन्यवाद, लेकिन मेरे पास रंग है और पहले से ही इसे आकार में सेट कर दिया है। लेकिन मुझे जावा फ़ाइल के माध्यम से प्रोग्रामेटिक रूप से इसे बदलने की जरूरत है। – Android

+0

अद्यतन – Trikaldarshi

+0

के माध्यम से जाएं हाँ महोदय, मैंने ऐसा किया लेकिन अब मेरी छवि दृश्य गुम है। – Android

3

एक है यहां देखें

http://developer.android.com/guide/topics/graphics/2d-graphics.html#shape-drawable

कोड में Shape बनाने के बजाय आप अपने XML को बढ़ाने के लिए inflate का उपयोग कर सकते हैं।

+0

वितरित किए गए अधिक स्पष्टीकरणों के लिए टिप्पणियों की जांच की है, लेकिन एक नौसिखिया होने के नाते मैं आपको कुछ ट्यूटोरियल/आलेख सहायता के लिए पूछ सकता हूं, जो आपके उत्तर को – Android

+0

प्रदान करता है उदाहरण। – techiServices

-1

सभी समाधान ImageView की पृष्ठभूमि का उपयोग करने का सुझाव देते हैं। मुझे लगता है कि यह वांछित समाधान नहीं है। सवाल पहले से ही दर्शाता है कि एक सहज दृष्टिकोण क्या होगा: आकार को src विशेषता पर लागू करना।आदेश तो आकार के रंग प्रोग्राम के रूप में बदलने के लिए आप क्या करेंगे:

GradientDrawable drawable = (GradientDrawable) priorityImageView.getDrawable(); 
drawable.setColor(Color.RED); 

यह देखते हुए कि आकार मूल प्रश्न में के रूप में नियुक्त किया गया है:

<ImageView 
    android:id="@+id/iv_priority" 
    android:src="@drawable/case_priority" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"/> 

यह भी लाभ यह है कि आप imageView के सेट कर सकते हैं लाता है अपनी सामग्री से पृष्ठभूमि अलग से।

+0

इस तरह यह काम नहीं करता है। NullException – Sahil

+1

देता है इस उत्तर ने मेरी मदद की, इसलिए यह आम तौर पर काम कर रहा है। –

0

Lars Blumberg's answer जैसा कि मैंने भी पृष्ठभूमि बदलने के लिए नहीं करना चाहता था, इसलिए मैं अपने छवि को कोड के लिए निम्न लागू है, के बाद से मैं एक GradientDrawable नहीं था:

Drawable drawable = imageView.getDrawable(); 
drawable.setColorFilter(Color.CYAN, PorterDuff.Mode.MULTIPLY); 
संबंधित मुद्दे