2011-12-21 16 views
12

Tengo una imageview que debe ser cambiado al hacer clicimageview.setBackgroundResource androide() no funciona

public class Settings extends Activity implements OnClickListener 
{ 
    private ImageView im1; 
    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.settings); 
     im1 = (ImageView) findViewById(R.id.imageView1); 
     im1.setOnClickListener(this); 
    } 
@Override 
public void onClick(View v) 
    { 
    // TODO Auto-generated method stub 
    if (v == im1) 
    { 
     Log.d("test", "hey!"); 
      v.setBackgroundResource(R.drawable.img1); 
      } 
    } 
} 

cuando se hace clic se ejecuta el método e imprime "¡Hey!" pero la imagen no cambiará?

EDITAR: olvidó mencionar que imageview contiene otra imagen proporcionada por el archivo de diseño xml

+0

es la imagen que su imageview contiene transparente? porque el fondo está, bueno, en el fondo – njzk2

+0

no, simplemente funciona bien ahora –

Respuesta

41

Por convención, usted debe utilizar setImageResource(R.drawable.img1); (o setImageDrawable(getResources().getDrawable(R.drawable.img1));) en lugar de setBackgroundResource(R.drawable.img1);.

+0

funciona como el encanto: D gracias! –

+0

setImageDrawable no funcionará en pre-lollipop. – Subho

+0

@Chris Cashwell gracias señor. –

1
ImageView i = (ImageView) findViewById(R.id.imageView1); 
    i.setImageResource(R.id.logo); 

    or 

    i.setBackgroundResource(R.drawable.icon); 
-1

No es conveniente que se use setimageResource(). Ambas API se pueden utilizar.

Además, en su caso, se ve como el caso de los recursos de sincronización.

1

ACTUALIZACIÓN

Ahora, se puede utilizar como el de abajo,

imageView.setImageDrawable(ContextCompat.getDrawable(this, R.drawable.img1)); 
+0

setImageDrawable no funcionará en pre-lollipop – Subho

1

probarlo en API 25

imgSchedule.setImageDrawable(getResources().getDrawable(R.drawable.circle_image_selected));