1. ホーム
  2. アンドロイド

[解決済み】ImageViewのソースを変更する

2022-03-29 01:31:29

質問

私は ImageView で、xmlに以下のような構文でソース画像が設定されています。

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

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

myImgView.setBackgroundResource(R.drawable.monkey);

それは動作しますが、私はandroidが古い画像の上に新しい画像を積み重ねることに気づきました(議論に関係ないことをどうやって知ったかは聞かないでください :)。新しい画像を設定する前に、古い画像を削除する必要があります。

どうすれば実現できるのでしょうか?

どのように解決するのですか?

ImageViewのソースを変更する。

使用方法 setBackgroundResource() メソッドを使用します。

  myImgView.setBackgroundResource(R.drawable.monkey);

そのサルを背景に置いているんですね。

の使用をお勧めします。 setImageResource() メソッドを使用します。

  myImgView.setImageResource(R.drawable.monkey);

または setImageDrawable() メソッドを使用します。

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