Cambiar la fuente de ImageView


257

Tengo un ImageViewconjunto de imágenes fuente en el xml usando la siguiente sintaxis:

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

Ahora necesito cambiar esta imagen mediante programación. Sin embargo, lo que necesito hacer es eliminar la imagen anterior y agregar una nueva. Lo que he hecho es esto:

myImgView.setBackgroundResource(R.drawable.monkey);

Funciona pero noté que Android apila la nueva imagen sobre la anterior (no me pregunten cómo descubrí que no es relevante para la discusión :). Definitivamente necesito deshacerme de la anterior antes de configurar la nueva imagen.

¿Cómo puedo lograr eso?

Respuestas:


636

Cambio de fuente de ImageView:

Utilizando el setBackgroundResource()método:

  myImgView.setBackgroundResource(R.drawable.monkey);

Estás poniendo a ese mono en el fondo.

Sugiero el uso del setImageResource()método:

  myImgView.setImageResource(R.drawable.monkey);

o con el setImageDrawable()método:

myImgView.setImageDrawable(getResources().getDrawable(R.drawable.monkey));

*** Con el nuevo Android API 22 getResources().getDrawable()ahora está en desuso. Este es un ejemplo de cómo usarlo ahora:

myImgView.setImageDrawable(getResources().getDrawable(R.drawable.monkey, getApplicationContext().getTheme()));

y cómo validar para versiones antiguas de 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));
}

genial ... desafortunadamente, acabo de descubrir que necesito reemplazar también un conjunto de imágenes con myImgView.setImageDrawable (img); el código que sugirió myImgView.setImageResource (R.drawable.monkey); No es capaz de hacerlo. ¿Cómo puedo deshacerme del dibujo antes de renderizar el mono? :) muchas gracias
nourdine

1
getDrawable (int) ahora está en desuso y getDrawable (int, theme) se agrega en API-21. ¿Ahora qué hacer? ¿Puedes por favor actualizar tu respuesta?
mubeen

La llamada requiere un nivel 16 de API (el minimo actual es 13): android.widget.ImageView#setBackground
Iman Marashi

ContextCompatobtener getTheme
dibujable


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

se usa para configurar la imagen en la vista de imagen actual, pero si desea eliminar esta imagen, puede usar este código como:

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

ahora esto eliminará la imagen de su vista de imagen, porque ha establecido el valor de los recursos en cero.


18

obtener ID de ImageView como

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

luego use

imgFp.setImageResource(R.drawable.fpscan);

para configurar la imagen de origen mediante programación en lugar de XML.


8

O prueba este. Para mí está funcionando bien:

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

5

Respuesta visual suplementaria

ImageView: setImageResource()(método estándar, se mantiene la relación de aspecto)

ingrese la descripción de la imagen aquí

View: setBackgroundResource()(la imagen se estira)

ingrese la descripción de la imagen aquí

Ambos

ingrese la descripción de la imagen aquí

Mi respuesta más completa está aquí .


3

Si desea establecer en la vista de imagen una imagen que está dentro de los directorios mipmap puede hacerlo de esta manera:

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


2

Simplemente escriba un método para cambiar la vista de imagen

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();
        }
    }
}
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.