2013-06-03 5 views
58

जब मैं प्रोग्राम को प्रोग्रामेटिक रूप से बदलता हूं, तो यह पुरानी छवि के शीर्ष पर नई छवि दिखाता है जो मूल रूप से लेआउट फ़ाइल में सेट होता है?ImageView की छवि बदलें प्रोग्रामेटिक रूप से एंड्रॉइड

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="39dp" 
    android:gravity="center_vertical" > 
    <ImageView 
     android:id="@+id/qStatusImage" 
     android:layout_width="16dp" 
     android:layout_height="16dp" 
     android:layout_margin="5dp" 
     android:background="@drawable/thumbs_down" 
     /> 

    <TextView 
     android:id="@+id/grp_child" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:textColor="@color/radio_colors" 
     android:textStyle="normal" 
     android:background="@color/grey" 
    /> 

</LinearLayout> 

और कोड कि imageView सेट:

 @Override 
public View getChildView(final int groupPosition, final int childPosition, 
     boolean isLastChild, View convertView, ViewGroup parent) { 
//Answers 
      if(answersGroup != null) 
        answersGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() { 
         @Override 
        public void onCheckedChanged(RadioGroup group, int checkedId) { 

         // int index = answersGroup.indexOfChild(findViewById(answersGroup.getCheckedRadioButtonId())); 

          qImageView = (ImageView) V.findViewById(R.id.qStatusImage); 
          if(ans ==0 || ans == 5){ 
          // qSV.setImageResource(0); 
           qImageView.setImageResource(R.drawable.thumbs_up); 
          } 
          else 
           qImageView.setImageResource(R.drawable.thumbs_down); 

         } 
        }); 

मैं क्या याद आ रही है

यहाँ मेरी लेआउट फ़ाइल का एक टुकड़ा है?

+0

शीर्षक यह वर्णन करने के लिए सटीक बनाने की कोशिश को गुमराह कर रहा है! – neferpitou

उत्तर

119

ऐसा इसलिए होता है क्योंकि आप पृष्ठभूमि के बजाय ImageView का स्रोत सेट कर रहे हैं।

उपयोग इस बजाय:

qImageView.setBackgroundResource(R.drawable.thumbs_down); 

Here एक धागा है कि दो तरीकों के बीच मतभेदों के बारे में बात करती है। एक्सएमएल में

+14

एपीआई 14 में काम नहीं करना चाहिए। इसका उपयोग करना चाहिए: image.setImageResource (R.drawable.icon_dot1); – Brave

+0

@ बहादुर का जवाब सही है। 'SetBackgroundResource() 'का उपयोग करके :(नई छवि का उपयोग करने से पहले मौजूदा छवि को नहीं हटाया .. इसलिए मुझे वहां दो छवियां मिल रही हैं।' SetImageResource() 'ने काम किया :)। फिर भी .. पोस्ट मुझे सही रास्ते पर मिला - दोनों उत्तरों के लिए मेरा धन्यवाद! – gnB

+0

@mricyicy के जवाब के अनुसार, समस्या यह है कि xml पृष्ठभूमि छवि को परिभाषित कर रहा है और कोड संसाधन छवि को बदल रहा है। वे वही नहीं हैं। संसाधन छवि को सेट करना वास्तव में यहां वांछित है, इसलिए xml को ठीक किया जाना चाहिए। –

13

छवि देखने के लिए, जहां android:background="@drawable/thumbs_down android:src="@drawable/thumbs_down"

के लिए यह परिवर्तन वर्तमान में यह उस में देखने के लिए पृष्ठभूमि और नहीं वास्तविक छवि के रूप में उस छवि को दे रहा है है के लिए अपने XML में।

41

उपयोग:

android:src="@drawable/image" 

स्रोत उपयोग:

imageView.setImageDrawable(ContextCompat.getDrawable(activity, R.drawable.your_image)); 
+0

धन्यवाद, यह काम कर रहा है –

17
qImageView.setImageResource(R.drawable.img2); 

मुझे लगता है कि यह आप

+0

यह सबसे अच्छा जवाब आईएमओ है। – seekingStillness

2

में मदद मिलेगी एक्सएमएल डिजाइन में

कोड के माध्यम से

Drawable छवि

imageview.setImageResource(R.drawable.imagename); 

सर्वर छवि

Glide.with(context).load(url) .placeholder(R.drawable.image) 
.into(imageView); 

Picasso.with(context).load(url) .placeholder(R.drawable.image) 
.into(imageView); 
संबंधित मुद्दे