代码之家  ›  专栏  ›  技术社区  ›  nourdine

更改ImageView源

  •  219
  • nourdine  · 技术社区  · 14 年前

    我有一个 ImageView 在XML中使用以下语法设置源映像:

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

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

    myImgView.setBackgroundResource(R.drawable.monkey);
    

    它可以工作,但我注意到安卓将新图像堆叠在旧图像之上(不要问我如何发现它与讨论无关)。在树立新形象之前,我绝对需要把旧的去掉。

    我怎样才能做到?

    8 回复  |  直到 6 年前
        1
  •  558
  •   Rohit Mandiwal    7 年前

    更改ImageView源:

    使用 setBackgroundResource() 方法:

      myImgView.setBackgroundResource(R.drawable.monkey);
    

    你把那只猴子放在后面。

    我建议使用 setImageResource() 方法:

      myImgView.setImageResource(R.drawable.monkey);
    

    或与 setImageDrawable() 方法:

    myImgView.setImageDrawable(getResources().getDrawable(R.drawable.monkey));
    

    ***新安卓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));
    }
    
        2
  •  46
  •   David Hedlund    14 年前

    你应该用 setImageResource 而不是 setBackgroundResource .

        3
  •  28
  •   Perception    12 年前
    myImgView.setImageResource(R.drawable.monkey);
    

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

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

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

        4
  •  18
  •   Neha Shukla    10 年前

    获取ImageView的ID为

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

    然后使用

    imgFp.setImageResource(R.drawable.fpscan);
    

    从XML编程设置源图像。

        5
  •  7
  •   radu_paun    8 年前

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

    imageView.setImageDrawable(ContextCompat.getDrawable(this, image));
    
        6
  •  3
  •   CommonSenseCode    9 年前

    如果要在ImageView中设置位于 MIPMAP DRIs 你可以这样做:

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

        7
  •  2
  •   ZR Low    6 年前

    只需编写一个更改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();
            }
        }
    }
    
        8
  •  1
  •   Suragch Shmidt    7 年前

    补充视觉回答

    imageview : setimageresource() (standard method,aspect ratio is kept)!

    view : backgroundresource() (image is extended)

    <

    我更完整的答案是 here

    enter image description here

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

    enter image description here

    两个

    enter image description here

    我更完整的答案是 here .