ImageView 소스 변경


257

나는이 ImageView다음 구문을 사용하여 XML의 소스 이미지 세트를 :

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

이제 프로그래밍 방식으로이 이미지를 변경해야합니다. 내가해야 할 일은 이전 이미지를 삭제하고 새 이미지를 추가하는 것입니다. 내가 한 일은 이것입니다.

myImgView.setBackgroundResource(R.drawable.monkey);

그것은 작동하지만 안드로이드가 오래된 이미지 위에 새로운 이미지를 쌓는 것을 알았습니다 (토론과 관련이 없다는 것을 어떻게 알지 말아주세요). 새 이미지를 설정하기 전에 이전 이미지를 제거해야합니다.

어떻게하면 되나요?

답변:


635

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));
}

아 멋지다 ... 불행히도 방금 이미지 세트를 myImgView.setImageDrawable (img)로 바꿔야한다는 것을 알았습니다. 제안한 코드 myImgView.setImageResource (R.drawable.monkey); 할 수 없습니다. 원숭이를 렌더링하기 전에 드로어 블을 어떻게 제거 할 수 있습니까? :) 많은 감사
nourdine

1
getDrawable (int)는 더 이상 사용되지 않으며 getDrawable (int, theme)이 API-21에 추가되었습니다. 이제 어떻게해야합니까? 답을 업데이트 해 주시겠습니까?
mubeen

호출에는 API 레벨 16이 필요합니다 (현재 최소 분은 13입니다) : android.widget.ImageView#setBackground
Iman Marashi

ContextCompat없이 getTheme
그릴


32
myImgView.setImageResource(R.drawable.monkey);

현재 이미지보기에서 이미지를 설정하는 데 사용되지만이 이미지를 삭제하려면 다음과 같이이 코드를 사용할 수 있습니다.

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

이제 리소스 값이 0으로 설정되었으므로 이미지보기에서 이미지가 삭제됩니다.


18

ImageView의 ID를

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

그런 다음 사용

imgFp.setImageResource(R.drawable.fpscan);

XML 대신 프로그래밍 방식으로 소스 이미지를 설정합니다.


8

아니면 이것을 시도하십시오. 나를 위해 그것은 잘 작동합니다 :

imageView.setImageDrawable(ContextCompat.getDrawable(this, image));

5

보충적인 시각적 답변

ImageView: setImageResource()(표준 방법, 종횡비 유지)

여기에 이미지 설명을 입력하십시오

View: setBackgroundResource()(이미지가 늘어납니다)

여기에 이미지 설명을 입력하십시오

양자 모두

여기에 이미지 설명을 입력하십시오

내 완전한 답변은 여기에 있습니다 .


3

밉맵 디렉토리 안에있는 이미지를 imageview에서 설정하려면 다음 과 같이하십시오.

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


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();
        }
    }
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.