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

かっこいい...残念ながら、画像セットもmyImgView.setImageDrawable(img);に置き換える必要があることがわかりました。あなたが提案したコードmyImgView.setImageResource(R.drawable.monkey); それを行うことができません。サルをレンダリングする前にドローアブルを削除するにはどうすればよいですか?:)多くの感謝
nourdine

1
getDrawable(int)が廃止され、API-21にgetDrawable(int、theme)が追加されました。今何をすべきか?回答を更新していただけますか?
mubeen

呼び出しにはAPIレベル16(現在の最小値は13)が必要です:android.widget.ImageView#setBackground
Iman

ContextCompatなしでドローアブルを取得するにはgetTheme
Outofdate


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

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

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

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


18

ImageViewのIDを取得

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

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

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


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();
        }
    }
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.