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?

Nourdine
fuente

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));
}
Jorgesys
fuente
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.

PIR FAHIM SHAH
fuente
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.

Neha Shukla
fuente
8

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

imageView.setImageDrawable(ContextCompat.getDrawable(this, image));
radu_paun
fuente
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í .

Suragch
fuente
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)

CommonSenseCode
fuente
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();
        }
    }
}
BAJO
fuente