Android에서 프로그래밍 방식으로 ImageView의 이미지 변경
프로그래밍 방식으로 이미지를 변경하면 원래 레이아웃 파일에 설정된 이전 이미지 위에 새 이미지가 표시됩니까?
다음은 내 레이아웃 파일의 일부입니다.
<LinearLayout
android:layout_width="match_parent"
android:layout_height="39dp"
android:gravity="center_vertical" >
<ImageView
android:id="@+id/qStatusImage"
android:layout_width="16dp"
android:layout_height="16dp"
android:layout_margin="5dp"
android:background="@drawable/thumbs_down"
/>
<TextView
android:id="@+id/grp_child"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:textColor="@color/radio_colors"
android:textStyle="normal"
android:background="@color/grey"
/>
</LinearLayout>
그리고 imageView를 설정하는 코드 :
@Override
public View getChildView(final int groupPosition, final int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
//Answers
if(answersGroup != null)
answersGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
// int index = answersGroup.indexOfChild(findViewById(answersGroup.getCheckedRadioButtonId()));
qImageView = (ImageView) V.findViewById(R.id.qStatusImage);
if(ans ==0 || ans == 5){
// qSV.setImageResource(0);
qImageView.setImageResource(R.drawable.thumbs_up);
}
else
qImageView.setImageResource(R.drawable.thumbs_down);
}
});
내가 무엇을 놓치고 있습니까?
ImageView
배경 대신 src를 설정하기 때문에 발생 합니다.
대신 사용 :
qImageView.setBackgroundResource(R.drawable.thumbs_down);
다음 은 두 방법의 차이점에 대해 설명하는 스레드입니다.
XML에서 사용 :
android:src="@drawable/image"
소스 사용 :
imageView.setImageDrawable(ContextCompat.getDrawable(activity, R.drawable.your_image));
짧은 답변
이미지를 res/drawable
폴더에 복사하고
imageView.setImageResource(R.drawable.my_image);
세부
다양한 답변으로 인해 약간의 혼란이 발생할 수 있습니다. 우리는
setBackgroundResource()
setBackgroundDrawable()
setBackground()
setImageResource()
setImageDrawable()
setImageBitmap()
Background
이름에 있는 메서드는 모두 구체적이 View
아니라 클래스에 속합니다 ImageView
. 그러나 ImageView
상속 이후에도 View
사용할 수 있습니다. Image
이름에 있는 메서드 는 특히에 속합니다 ImageView
.
View
(하지만 방법은 모두 서로 같은 일을 할 setBackgroundDrawable()
되지 않습니다) 우리가에 초점을 맞출 것이다, 그래서 setBackgroundResource()
. 마찬가지로 ImageView
메서드는 모두 동일한 작업을 수행하므로 setImageResource()
. 메소드 간의 유일한 차이점은 전달하는 매개 변수 유형입니다.
설정
여기입니다 FrameLayout
을 포함하는 ImageView
. 는 ImageView
처음에에 모든 이미지가 없습니다. (나는 FrameLayout
그 주위에 테두리를 놓을 수 있도록를 추가했습니다. 이렇게하면의 가장자리를 볼 수 있습니다 ImageView
.)
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<FrameLayout
android:id="@+id/frameLayout"
android:layout_width="250dp"
android:layout_height="250dp"
android:background="@drawable/border"
android:layout_centerInParent="true">
<ImageView
android:id="@+id/imageView"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</FrameLayout>
</RelativeLayout>
아래에서 우리는 다른 방법을 비교할 것입니다.
setImageResource ()
ImageView의를 사용 setImageResource()
하면 이미지가 종횡비를 유지하고 크기가 조정됩니다. 다음은 두 가지 다른 이미지 예입니다.
imageView.setImageResource(R.drawable.sky);
imageView.setImageResource(R.drawable.balloons);
setBackgroundResource ()
setBackgroundResource()
반면에 View의를 사용 하면 이미지 리소스가 뷰를 채우기 위해 늘어납니다.
imageView.setBackgroundResource(R.drawable.sky);
imageView.setBackgroundResource(R.drawable.balloons);
양자 모두
View의 배경 이미지와 ImageView의 이미지는 별도로 그려 지므로 둘 다 설정할 수 있습니다.
imageView.setBackgroundResource(R.drawable.sky);
imageView.setImageResource(R.drawable.balloons);
qImageView.setImageResource(R.drawable.img2);
나는 이것이 당신을 도울 것이라고 생각합니다
이미지보기에 대한 XML에서 android:background="@drawable/thumbs_down
이를 다음으로 변경했습니다.android:src="@drawable/thumbs_down"
현재는 그 이미지를 실제 이미지가 아닌보기의 배경으로 배치하고 있습니다.
XML 디자인에서
android:background="@drawable/imagename
android:src="@drawable/imagename"
코드를 통한 드로어 블 이미지
imageview.setImageResource(R.drawable.imagename);
서버 이미지
## Dependency ##
implementation 'com.github.bumptech.glide:glide:4.7.1'
annotationProcessor 'com.github.bumptech.glide:compiler:4.7.1'
Glide.with(context).load(url) .placeholder(R.drawable.image)
.into(imageView);
## dependency ##
implementation 'com.squareup.picasso:picasso:2.71828'
Picasso.with(context).load(url) .placeholder(R.drawable.image)
.into(imageView);
당신이 사용할 수있는
val drawableCompat = ContextCompat.getDrawable(context, R.drawable.ic_emoticon_happy)
또는 자바 자바
Drawable drawableCompat = ContextCompat.getDrawable(getContext(), R.drawable.ic_emoticon_happy)
참고 URL : https://stackoverflow.com/questions/16906528/change-image-of-imageview-programmatically-in-android
'developer tip' 카테고리의 다른 글
Mac 키보드를 사용하여 iPhone 시뮬레이터에서 텍스트 필드를 입력 할 수 없습니까? (0) | 2020.08.29 |
---|---|
하위보기가보기에 있는지 확인 (0) | 2020.08.29 |
Android 스튜디오-android-18 대상을 찾지 못했습니다. (0) | 2020.08.28 |
$ this 변수는 PHP에서 무엇을 의미합니까? (0) | 2020.08.28 |
JavaScript를 사용하여 브라우저 버전과 운영 체제를 감지하는 방법은 무엇입니까? (0) | 2020.08.28 |