Изменить изображение 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);

}
});


чего мне не хватает?

3181   7  

7 ответов:

это происходит потому, что вы устанавливаете src ImageView вместо фона.

используйте этот код:

qImageView.setBackgroundResource(R.drawable.thumbs_down);

здесьэто нить, которая говорит о различиях между двумя методами.

использовать в XML:

android:src="@drawable/image"

источник использовать:

imageView.setImageDrawable(ContextCompat.getDrawable(activity, R.drawable.your_image));
qImageView.setImageResource(R.drawable.img2);

Я думаю, что это поможет вам

в вашем XML для представления изображения, где у вас есть android:background="@drawable/thumbs_down измените это на android:src="@drawable/thumbs_down"

В настоящее время он помещает это изображение в качестве фона для представления, а не фактическое изображение в нем.

короткий ответ:

просто скопируйте изображение в свой и использовать

imageView.setImageResource(R.drawable.my_image);

подробности

разнообразие ответов может вызвать небольшую путаницу. Мы есть

методы Background в их имени все принадлежат к View класса, а не ImageView специально. Но так как ImageView наследует от View вы можете использовать их тоже. Этот методы с Image в их названии принадлежат конкретно ImageView.

The View методы все делают то же самое, что и друг с другом (хотя setBackgroundDrawable() устарел), поэтому мы просто сосредоточимся на setBackgroundResource(). Точно так же,ImageView методы все делают то же самое, поэтому мы просто сосредоточимся на setImageResource(). Единственное различие между методами - это тип передаваемого параметра.

настройка

здесь FrameLayout, которая содержит ImageView. Элемент ImageView изначально в нем нет никакого изображения. (Я только добавил FrameLayout чтобы я мог поставить границу вокруг него. Таким образом, вы можете увидеть край ImageView.)

enter image description here

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

enter image description here

setBackgroundResource()

используя представления setBackgroundResource(), С другой стороны, вызывает растягивание ресурса изображения для заполнения представления.

  • imageView.setBackgroundResource(R.drawable.sky);
  • imageView.setBackgroundResource(R.drawable.balloons);

enter image description here

и

фоновое изображение и изображение ImageView рисуется отдельно, поэтому вы можете установить их оба.

imageView.setBackgroundResource(R.drawable.sky);
imageView.setImageResource(R.drawable.balloons);

enter image description here

в 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

    Ничего не найдено.