303

次の構文を使用してImageView、xmlにソースイメージが設定されています。

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

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

myImgView.setBackgroundResource(R.drawable.monkey);

それは動作しますが、Androidが古い画像の上に新しい画像をスタックしていることに気づきました(それが議論に関連していないことをどうやって見つけたのか私に聞かないでください:)。新しい画像を設定する前に、必ず古い画像を削除する必要があります。

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

4

8 に答える 8

724

ImageViewソースの変更:

方法の使用setBackgroundResource()

  myImgView.setBackgroundResource(R.drawable.monkey);

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

私は方法の使用を提案しますsetImageResource()

  myImgView.setImageResource(R.drawable.monkey);

またはsetImageDrawable()メソッドを使用して:

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

***新しいAndroidAPI22では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));
}
于 2010-06-04T14:12:20.793 に答える
64

setImageResourceの代わりに使用することになっていますsetBackgroundResource

于 2010-06-04T14:10:26.707 に答える
33
myImgView.setImageResource(R.drawable.monkey);

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

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

これで、リソース値がゼロに設定されているため、画像ビューから画像が削除されます。

于 2012-06-01T03:09:31.607 に答える
18

ImageViewのIDを次のように取得します

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

次に使用する

imgFp.setImageResource(R.drawable.fpscan);

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

于 2014-05-22T11:08:48.273 に答える
9

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

imageView.setImageDrawable(ContextCompat.getDrawable(this, image));
于 2016-08-18T14:32:31.147 に答える
9

補足的な視覚的回答

ImageView:(setImageResource()標準的な方法、アスペクト比は維持されます)

ここに画像の説明を入力してください

View:(setBackgroundResource()画像が引き伸ばされます)

ここに画像の説明を入力してください

両方

ここに画像の説明を入力してください

私のより完全な答えはここにあります。

于 2018-04-06T05:29:50.437 に答える
3

ミップマップディレクトリ内にある画像をimageviewに設定する場合は、次のように行うことができます。

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

于 2016-01-08T21:05:47.430 に答える
2

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();
        }
    }
}
于 2018-06-29T06:58:56.713 に答える