更改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)