ImageView स्रोत बदलना


257

मेरे पास ImageViewनिम्न सिंटैक्स का उपयोग करके xml में स्रोत छवि सेट के साथ है:

   <ImageView 
      android:id="@+id/articleImg"
      style="@style/articleImgSmall_2"
      android:src="@drawable/default_m" />

अब मुझे इस छवि को प्रोग्रामेटिक रूप से बदलने की आवश्यकता है। मुझे पुरानी छवि को हटाने और नया जोड़ने की आवश्यकता है। मैंने यह किया है:

myImgView.setBackgroundResource(R.drawable.monkey);

यह काम करता है लेकिन मैंने देखा कि पुराने के ऊपर Android छवि को ढेर कर दिया है (न ही मुझसे पूछें कि मुझे कैसे पता चला कि यह चर्चा के लिए प्रासंगिक नहीं है :)। नई छवि सेट करने से पहले मुझे निश्चित रूप से पुराने से छुटकारा पाने की आवश्यकता है।

मैं उसे कैसे प्राप्त कर सकता हूं?

जवाबों:


635

ImageView स्रोत बदलना:

setBackgroundResource()विधि का उपयोग:

  myImgView.setBackgroundResource(R.drawable.monkey);

आप उस बंदर को पृष्ठभूमि में रख रहे हैं।

मैं setImageResource()विधि के उपयोग का सुझाव देता हूं :

  myImgView.setImageResource(R.drawable.monkey);

या setImageDrawable()विधि के साथ :

myImgView.setImageDrawable(getResources().getDrawable(R.drawable.monkey));

*** नए Android एपीआई 22 getResources().getDrawable()के साथ अब पदावनत हो गया है। यह एक उदाहरण है कि अब कैसे उपयोग किया जाए:

myImgView.setImageDrawable(getResources().getDrawable(R.drawable.monkey, getApplicationContext().getTheme()));

और पुराने API संस्करणों को कैसे मान्य करें:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
     myImgView.setImageDrawable(getResources().getDrawable(R.drawable.monkey, getApplicationContext().getTheme()));
   } else {
     myImgView.setImageDrawable(getResources().getDrawable(R.drawable.monkey));
}

ओह कूल ... दुर्भाग्य से मुझे अभी पता चला है कि मुझे myImgView.setImageDrawable (img) के साथ एक छवि सेट को भी बदलने की आवश्यकता है; कोड आपने myImgView.setImageResource (R.drawable.monkey) को सुझाया; करने में सक्षम नहीं है। बंदर को प्रस्तुत करने से पहले मैं कैसे आकर्षित कर सकता हूं? :) बहुत धन्यवाद
nourdine

1
getDrawable (int) को अब हटा दिया गया और API-21 में getDrawable (int, theme) जोड़ दिया गया। अब क्या करें? क्या आप अपना जवाब अपडेट कर सकते हैं?
मुबीन

कॉल के लिए एपीआई स्तर 16 (वर्तमान न्यूनतम 13) की आवश्यकता होती है: android.widget.ImageView#setBackground
ईमान

ContextCompatबिना getTheme
ड्रॉबल


32
myImgView.setImageResource(R.drawable.monkey);

वर्तमान छवि दृश्य में छवि सेट करने के लिए उपयोग किया जाता है, लेकिन यदि आप इस छवि को हटाना चाहते हैं तो आप इस कोड का उपयोग कर सकते हैं:

((ImageView) v.findViewById(R.id.ImageView1)).setImageResource(0);

अब यह आपके छवि दृश्य से छवि को हटा देगा, क्योंकि इसने संसाधन मान को शून्य पर सेट कर दिया है।


18

ImageView की आईडी प्राप्त करें

ImageView imgFp = (ImageView) findViewById(R.id.imgFp);

तो उपयोग करें

imgFp.setImageResource(R.drawable.fpscan);

XML से बजाय प्रोग्राम इमेज को सोर्स करने के लिए।


8

या यह एक कोशिश करो। मेरे लिए यह ठीक काम कर रहा है:

imageView.setImageDrawable(ContextCompat.getDrawable(this, image));

5

पूरक दृश्य उत्तर

ImageView: setImageResource()(मानक विधि, पहलू अनुपात रखा गया है)

यहां छवि विवरण दर्ज करें

View: setBackgroundResource()(चित्र खिंचा हुआ है)

यहां छवि विवरण दर्ज करें

दोनों

यहां छवि विवरण दर्ज करें

मेरा पूरा जवाब यहाँ है


3

यदि आप इमेजव्यू में एक इमेज सेट करना चाहते हैं जो कि मिपमप डायर के अंदर हो तो आप इसे इस तरह से कर सकते हैं:

myImageView.setImageDrawable(getResources().getDrawable(R.mipmap.my_picture)


2

बस छवि बदलने के लिए एक विधि लिखें

public void setImage(final Context mContext, final ImageView imageView, int picture)
{
    if (mContext != null && imageView != null)
    {
        try
        {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
            {
                imageView.setImageDrawable(mContext.getResources().getDrawable(picture, mContext.getApplicationContext().getTheme()));
            } else
            {
                imageView.setImageDrawable(mContext.getResources().getDrawable(picture));
            }
        } catch (Exception e)
        {
            e.printStackTrace();
        }
    }
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.