我有一个ImageView
,使用以下语法在xml中设置了源图像:
<ImageView
android:id="@+id/articleImg"
style="@style/articleImgSmall_2"
android:src="@drawable/default_m" />
现在我需要以编程方式更改此图像。我需要做的是删除旧图像并添加一个新图像。我所做的就是:
myImgView.setBackgroundResource(R.drawable.monkey);
它有效,但我注意到android将新图像堆叠在旧图像之上(不要问我如何发现它与讨论无关:)。在设置新图像之前,我绝对需要摆脱旧版本。
我怎样才能做到这一点?
答案 0 :(得分:568)
myImgView.setBackgroundResource(R.drawable.monkey);
你把那只猴子放在后台。
我建议使用setImageResource()
方法:
myImgView.setImageResource(R.drawable.monkey);
或使用setImageDrawable()
方法:
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));
}
答案 1 :(得分:46)
您应该使用setImageResource
代替setBackgroundResource
。
答案 2 :(得分:28)
myImgView.setImageResource(R.drawable.monkey);
用于在当前图像视图中设置图像,但是如果要删除此图像 那么您可以使用以下代码:
((ImageView) v.findViewById(R.id.ImageView1)).setImageResource(0);
现在这将从图像视图中删除图像,因为它已将资源值设置为零。
答案 3 :(得分:18)
获取ImageView的ID
ImageView imgFp = (ImageView) findViewById(R.id.imgFp);
然后使用
imgFp.setImageResource(R.drawable.fpscan);
以编程方式设置源图像而不是XML。
答案 4 :(得分:7)
或试试这个。对我而言,它的工作正常:
imageView.setImageDrawable(ContextCompat.getDrawable(this, image));
答案 5 :(得分:3)
如果您想在imageview中设置 mipmap dirs 内的图片,您可以这样做:
myImageView.setImageDrawable(getResources().getDrawable(R.mipmap.my_picture)
答案 6 :(得分:2)
ImageView
:setImageResource()
(标准方法,保留宽高比)
View
:setBackgroundResource()
(图片被拉伸)
两个
我更全面的回答是here。
答案 7 :(得分:2)
只需编写一种更改图像视图的方法
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();
}
}
}