2010-04-27 17 views
6

come posso cambiare lo sfondo di un ImageView da java? Ho un ImageView e ad un certo punto ho bisogno di cambiare l'immagine che mostra (impostato negli stili). Ho cercato di fare in questo modo:cambia sfondo di un ImageView (la vecchia immagine rimane lì!)

placeHolder.setImageDrawable(myDrawb); 

ma sembra che la vecchia immagine rimane lì e si è parzialmente coperto, ma quello nuovo (che nel mio caso ha forma diversa).

spero che voi ragazzi potete aiutare!

applausi

risposta

13

Non è necessario toccare l'XML per utilizzare src anziché lo sfondo!

Un ImageView può visualizzare due drawable! Uno sullo sfondo e altri in primo piano. Sembra che tu stia cambiando sempre l'immagine di sfondo.

Invece di setBackgroundResource(resId) utilizzare setImageResource(resId) per modificare l'immagine in primo piano!

+0

a volte le risposte migliori sono in fondo :) – Jacksonkr

3

Cancella l'immagine di sfondo con:

placeHolder.setBackgroundResource(0); 
+0

sì! era così! quindi in pratica l'androide non sostituisce automaticamente il vecchio con quello nuovo ... lo impila a meno che non si usi setBackgroundResource. molto utile grazie – nourdine

+2

Lo sfondo è indipendente dal contenuto. Stai impostando il contenuto con setImageDrawable ma lasciando lo sfondo. – drawnonward

2

In alternativa si dovrebbe impostare la Src del ImageView in XML invece di impostare la Background. Penso che questo sia il modo "giusto" comunque.

+1

Non riesco a toccare l'XML! Carico immagini dal web e ho bisogno di buttarle nei loro segnaposto quando il download dell'immagine è finito – nourdine

+0

questa risposta dovrebbe essere votata come nessun collegamento con la domanda che viene posta qui – Sameer

+0

@Sameer no, questa è una risposta utile. Anche se il proprietario non ha alcuna utilità per questa risposta, ma gli altri che lo leggono possono usare questa risposta. In effetti, questa risposta mi ha aiutato molto –