更改ImageView源

android imageview android-imageview

260198 观看

8回复

3157 作者的声誉

ImageView使用以下语法在xml中设置了源图像:

   <ImageView 
      android:id="@+id/articleImg"
      style="@style/articleImgSmall_2"
      android:src="@drawable/default_m" />

现在我需要以编程方式更改此图像。我需要做的是删除旧图像并添加一个新图像。我做的是这样的:

myImgView.setBackgroundResource(R.drawable.monkey);

它工作但我注意到android将新图像堆叠在旧图像之上(不要问我是如何发现它与讨论无关:)。在设置新图像之前,我绝对需要摆脱旧版本。

我怎样才能做到这一点?

作者: nourdine 的来源 发布者: 2010 年 6 月 4 日

回应 8


46

109739 作者的声誉

你应该使用setImageResource而不是setBackgroundResource

作者: David Hedlund 发布者: 2010 年 6 月 4 日

573

98852 作者的声誉

决定

更改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));
}
作者: Jorgesys 发布者: 2010 年 6 月 4 日

28

421 作者的声誉

myImgView.setImageResource(R.drawable.monkey);

用于在当前图像视图中设置图像,但如果要删除此图像,则可以使用以下代码:

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

现在这将从图像视图中删除图像,因为它已将资源值设置为零。

作者: PIR FAHIM SHAH 发布者: 2012 年 6 月 1 日

18

2628 作者的声誉

获取ImageView的ID为

ImageView imgFp = (ImageView) findViewById(R.id.imgFp);

然后使用

imgFp.setImageResource(R.drawable.fpscan);

以编程方式设置源图像而不是XML。

作者: Neha Shukla 发布者: 2014 年 5 月 22 日

3

10983 作者的声誉

如果要在imageview中设置mipmap dirs中的图像,可以这样做:

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

作者: CommonSenseCode 发布者: 2016 年 1 月 8 日

7

578 作者的声誉

或试试这个。对我来说它工作得很好:

imageView.setImageDrawable(ContextCompat.getDrawable(this, image));
作者: radu_paun 发布者: 2016 年 8 月 18 日

2

233705 作者的声誉

补充的视觉答案

ImageView:( setImageResource()标准方法,保持纵横比)

在此输入图像描述

View:( setBackgroundResource()图像被拉伸)

在此输入图像描述

在此输入图像描述

我更全面的回答是这里

作者: Suragch 发布者: 2018 年 4 月 6 日

2

33 作者的声誉

只需编写一种更改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();
        }
    }
}
作者: LOW 发布者: 2018 年 6 月 29 日
32x32