Изменить изображение ImageView программно в Android
когда я программно изменяю изображение, оно показывает новое изображение поверх старого изображения, которое изначально задано в файле макета?
вот фрагмент моего файла макета:
<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);
}
});
чего мне не хватает?
7 ответов:
это происходит потому, что вы устанавливаете src
ImageViewвместо фона.используйте этот код:
qImageView.setBackgroundResource(R.drawable.thumbs_down);здесьэто нить, которая говорит о различиях между двумя методами.
использовать в XML:
android:src="@drawable/image"источник использовать:
imageView.setImageDrawable(ContextCompat.getDrawable(activity, R.drawable.your_image));
в вашем XML для представления изображения, где у вас есть
android:background="@drawable/thumbs_downизмените это наandroid:src="@drawable/thumbs_down"В настоящее время он помещает это изображение в качестве фона для представления, а не фактическое изображение в нем.
короткий ответ:
просто скопируйте изображение в свой и использовать
imageView.setImageResource(R.drawable.my_image);подробности
разнообразие ответов может вызвать небольшую путаницу. Мы есть
setBackgroundResource()setBackgroundDrawable()setBackground()setImageResource()setImageDrawable()setImageBitmap()методы
Backgroundв их имени все принадлежат кViewкласса, а неImageViewспециально. Но так какImageViewнаследует отViewвы можете использовать их тоже. Этот методы сImageв их названии принадлежат конкретноImageView.The
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(), С другой стороны, вызывает растягивание ресурса изображения для заполнения представления.
imageView.setBackgroundResource(R.drawable.sky);imageView.setBackgroundResource(R.drawable.balloons);и
фоновое изображение и изображение ImageView рисуется отдельно, поэтому вы можете установить их оба.
imageView.setBackgroundResource(R.drawable.sky); imageView.setImageResource(R.drawable.balloons);
в XML Design
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)или в java java
Drawable drawableCompat = ContextCompat.getDrawable(getContext(), R.drawable.ic_emoticon_happy)




Comments