web-dev-qa-db-ja.com

ImageViewソースを変更する

次の構文を使用して、xmlにソース画像を設定したImageViewがあります。

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

今、私はプログラムでこの画像を変更する必要があります。私がする必要があるのは古い画像を削除して新しい画像を追加することです。私がしたことはこれです:

myImgView.setBackgroundResource(R.drawable.monkey);

それは動作しますが、私はAndroidが古いものの上に新しい画像を重ねているのに気づきました(議論には関係ないことがわかったので私に聞いてはいけません:)。私は間違いなく新しいイメージを設定する前に古いものを取り除く必要があります。

どうすればそれを達成できますか?

227
nourdine

ImageViewソースを変更する:

setBackgroundResource() メソッドを使う:

  myImgView.setBackgroundResource(R.drawable.monkey);

あなたはその猿を背景に置いています。

setImageResource() メソッドを使うことをお勧めします。

  myImgView.setImageResource(R.drawable.monkey);

または setImageDrawable() methodを使用すると、

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

***新しいAndroid API 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));
}
569
Elenasys

あなたはsetImageResourceの代わりにsetBackgroundResourceを使うことになっています。

46
David Hedlund
myImgView.setImageResource(R.drawable.monkey);

現在の画像ビューで画像を設定するために使用されますが、この画像を削除したい場合は、次のようにこのコードを使用できます。

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

これで、リソースビューの値がゼロに設定されたため、イメージビューからイメージが削除されます。

28
PIR FAHIM SHAH

imageViewのIDを取得

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

それから

imgFp.setImageResource(R.drawable.fpscan);

xMLからではなくプログラムでソース画像を設定します。

18
Neha Shukla

またはこれを試してください。私にとってはうまくいっています。

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

Imageviewでmipmap dirsの内側にある画像を設定したい場合は、次のようにします。

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

3
CommonSenseCode

単にimageviewを変更するためのメソッドを書く

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();
        }
    }
}
2
LOW

補足のビジュアル回答

ImageViewsetImageResource()(標準方式、縦横比は保持されます)

enter image description here

ViewsetBackgroundResource()(画像は引き伸ばされます)

enter image description here

両方

enter image description here

私のより完全な答えは こちら です。

2
Suragch