2011-12-21 24 views
12

Ho un imageview che deve essere cambiato al clicimageview.setBackgroundResource Android() non funziona

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

quando si fa clic viene eseguito il metodo e stampa "hey!" ma l'immagine non cambierà?

EDIT: dimenticato di dire che imageview contiene un'altra immagine che possiede file di layout XML

+0

è l'immagine che il vostro imageview contiene trasparente? perché lo sfondo è, beh, sullo sfondo – njzk2

+0

no funziona bene ora –

risposta

41

Per convenzione, si dovrebbe utilizzare setImageResource(R.drawable.img1); (o setImageDrawable(getResources().getDrawable(R.drawable.img1));) al posto di setBackgroundResource(R.drawable.img1);.

+0

funziona come un incantesimo: D grazie! –

+0

setImageDrawable non funziona su pre-lollipop. – Subho

+0

@Chris Cashwell grazie signore. –

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

    or 

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

Non è necessario utilizzare setimageResource(). Entrambe le API possono essere utilizzate.

Inoltre, nel tuo caso, sembra proprio il caso di risorse fuori sincrono.

1

UPDATE

Ora, è possibile utilizzare come qui di seguito,

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

setImageDrawable non funziona su pre-lollipop – Subho

1

Try This In API 25

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