更改ImageView来源
我有一个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);
你把那只猴子放在后台。
我build议使用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()));
以及如何validation旧的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目录中的图像,你可以这样做:
myImageView.setImageDrawable(getResources().getDrawable(R.mipmap.my_picture)