ImageView kaynağını değiştirme


257

Ben ImageViewbir kaynak görüntü ile aşağıdaki sözdizimini kullanarak xml set:

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

Şimdi bu görüntüyü programlı olarak değiştirmem gerekiyor. Yapmam gereken eski görüntüyü silmek ve yeni bir tane eklemek. Ne yaptım budur:

myImgView.setBackgroundResource(R.drawable.monkey);

Çalışıyor ama android eski görüntünün üstüne yeni görüntü yığınları fark ettim (dont bana nasıl tartışma için ilgili olmadığını öğrendim sorma :). Yeni görüntüyü ayarlamadan önce kesinlikle eskisinden kurtulmam gerekiyor.

Bunu nasıl başarabilirim?

Yanıtlar:


636

ImageView kaynağını değiştirme:

setBackgroundResource()Yöntemi kullanarak :

  myImgView.setBackgroundResource(R.drawable.monkey);

o maymunu arka plana koyuyorsun.

setImageResource()Yöntemin kullanılmasını öneririm :

  myImgView.setImageResource(R.drawable.monkey);

veya setImageDrawable()yöntemle:

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

*** Yeni android API 22 getResources().getDrawable()ile artık kullanımdan kaldırıldı. Bu, şimdi nasıl kullanılacağına bir örnektir:

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

ve eski API sürümleri için nasıl doğrulama yapılır:

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));
}

oh cool ... ne yazık ki ben de bir görüntü seti myImgView.setImageDrawable (img) ile değiştirmeniz gerektiğini öğrendim; önerdiğiniz kod myImgView.setImageResource (R.drawable.monkey); yapamaz. maymunu yapmadan önce çekmeceden nasıl kurtulabilirim? :) çok teşekkürler
nourdine

1
getDrawable (int) artık kullanımdan kaldırıldı ve getDrawable (int, theme) API-21'e eklendi. Şimdi ne yapmalı? Lütfen cevabınızı güncelleyebilir misiniz?
mubeen

Çağrı, API düzey 16 gerektirir (geçerli min. 13'tür): android.widget.ImageView#setBackground
Iman Marashi

ContextCompatolmadan çekilebilir almak içingetTheme
Outofdate


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

geçerli resim görünümünde resim ayarlamak için kullanılır, ancak bu resmi silmek istiyorsanız şu kodu kullanabilirsiniz:

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

artık bu, kaynak değerini sıfıra ayarladığından görüntüyü görüntü görünümünüzden siler.


18

ImageView kimliğini şu şekilde al

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

sonra kullan

imgFp.setImageResource(R.drawable.fpscan);

XML yerine kaynak görüntüyü programlı olarak ayarlamak için.


8

Veya bunu deneyin. Benim için iyi çalışıyor:

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

5

Ek görsel cevap

ImageView: setImageResource()(standart yöntem, en boy oranı korunur)

resim açıklamasını buraya girin

View: setBackgroundResource()(resim uzatılmış)

resim açıklamasını buraya girin

Her ikisi de

resim açıklamasını buraya girin

Tam cevabım burada .


3

Görüntü görünümünde mipmap dizinlerinin içindeki bir görüntüyü ayarlamak istiyorsanız, bunu şu şekilde yapabilirsiniz:

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


2

Görüntüleme görünümünü değiştirmek için bir yöntem yazmanız yeterlidir

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();
        }
    }
}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.