studio programacion imagen from cambiar android imageview

programacion - imagebutton android cambiar imagen



Cambia la imagen de ImageView programáticamente en Android (7)

Respuesta corta

Solo copie una imagen en su carpeta res/drawable y use

imageView.setImageResource(R.drawable.my_image);

Detalles

La variedad de respuestas puede causar un poco de confusión. Tenemos

Todos los métodos con Background en su nombre pertenecen a la clase View , no a ImageView específicamente. Pero como ImageView hereda de View también puede usarlos. Los métodos con Image en su nombre pertenecen específicamente a ImageView .

Todos los métodos de View hacen lo mismo entre sí (aunque setBackgroundDrawable() está en desuso), así que solo nos centraremos en setBackgroundResource() . De manera similar, todos los métodos ImageView hacen lo mismo, por lo que nos centraremos en setImageResource() . La única diferencia entre los métodos es el tipo de parámetro que se pasa.

Preparar

Aquí hay un FrameLayout que contiene un ImageView . El ImageView inicialmente no tiene ninguna imagen en él. (Solo agregué el FrameLayout para poder poner un borde alrededor de él. De esa manera puedes ver el borde de 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>

A continuación vamos a comparar los diferentes métodos.

setImageResource ()

Si usa setImageResource() ImageView, entonces la imagen mantiene su relación de aspecto y se redimensiona para ajustarse. Aquí hay dos ejemplos de imágenes diferentes.

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

setBackgroundResource ()

Por otro lado, al usar setBackgroundResource() View, el recurso de imagen se estira para llenar la vista.

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

Ambos

La imagen de fondo de la Vista y la imagen de ImageView se dibujan por separado, por lo que puede configurar ambas.

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

Cuando cambio la imagen mediante programación, ¿se muestra una nueva imagen sobre la imagen anterior que se estableció originalmente en el archivo de diseño?

Aquí hay un fragmento de mi archivo de diseño:

<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>

Y el código que establece el 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); } });

¿Qué me estoy perdiendo?


En su XML para la vista de imagen, donde tiene android:background="@drawable/thumbs_down cambie esto a android:src="@drawable/thumbs_down"

Actualmente está colocando esa imagen como el fondo de la vista y no la imagen real en ella.


Eso sucede porque está configurando el src de ImageView lugar del fondo.

Use esto en su lugar:

qImageView.setBackgroundResource(R.drawable.thumbs_down);

Here un hilo que habla de las diferencias entre los dos métodos.


Puedes usar

val drawableCompat = ContextCompat.getDrawable(context, R.drawable.ic_emoticon_happy)

o en java java

Drawable drawableCompat = ContextCompat.getDrawable(getContext(), R.drawable.ic_emoticon_happy)


Uso en XML:

android:src="@drawable/image"

Uso de la fuente:

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


En diseño XML

android:background="@drawable/imagename android:src="@drawable/imagename"

Imagen dibujable a través de código

imageview.setImageResource(R.drawable.imagename);

Imagen del servidor

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


qImageView.setImageResource(R.drawable.img2);

Creo que esto te ayudará