次の構文を使用して、xmlにソース画像を設定したImageView
があります。
<ImageView
Android:id="@+id/articleImg"
style="@style/articleImgSmall_2"
Android:src="@drawable/default_m" />
今、私はプログラムでこの画像を変更する必要があります。私がする必要があるのは古い画像を削除して新しい画像を追加することです。私がしたことはこれです:
myImgView.setBackgroundResource(R.drawable.monkey);
それは動作しますが、私はAndroidが古いものの上に新しい画像を重ねているのに気づきました(議論には関係ないことがわかったので私に聞いてはいけません:)。私は間違いなく新しいイメージを設定する前に古いものを取り除く必要があります。
どうすればそれを達成できますか?
setBackgroundResource()
メソッドを使う:
myImgView.setBackgroundResource(R.drawable.monkey);
あなたはその猿を背景に置いています。
setImageResource()
メソッドを使うことをお勧めします。
myImgView.setImageResource(R.drawable.monkey);
または setImageDrawable()
methodを使用すると、
myImgView.setImageDrawable(getResources().getDrawable(R.drawable.monkey));
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));
}
あなたはsetImageResource
の代わりにsetBackgroundResource
を使うことになっています。
myImgView.setImageResource(R.drawable.monkey);
現在の画像ビューで画像を設定するために使用されますが、この画像を削除したい場合は、次のようにこのコードを使用できます。
((ImageView) v.findViewById(R.id.ImageView1)).setImageResource(0);
これで、リソースビューの値がゼロに設定されたため、イメージビューからイメージが削除されます。
imageViewのIDを取得
ImageView imgFp = (ImageView) findViewById(R.id.imgFp);
それから
imgFp.setImageResource(R.drawable.fpscan);
xMLからではなくプログラムでソース画像を設定します。
またはこれを試してください。私にとってはうまくいっています。
imageView.setImageDrawable(ContextCompat.getDrawable(this, image));
Imageviewでmipmap dirsの内側にある画像を設定したい場合は、次のようにします。
myImageView.setImageDrawable(getResources().getDrawable(R.mipmap.my_picture)
単に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();
}
}
}
ImageView
:setImageResource()
(標準方式、縦横比は保持されます)
View
:setBackgroundResource()
(画像は引き伸ばされます)
両方
私のより完全な答えは こちら です。