Ich habe ein ImageView
mit einem Quellbild in der XML mit der folgenden Syntax festgelegt:
<ImageView
android:id="@+id/articleImg"
style="@style/articleImgSmall_2"
android:src="@drawable/default_m" />
Jetzt muss ich dieses Bild programmgesteuert ändern. Was ich tun muss, ist das alte Bild zu löschen und ein neues hinzuzufügen. Was ich getan habe ist folgendes:
myImgView.setBackgroundResource(R.drawable.monkey);
Es funktioniert, aber ich habe festgestellt, dass Android das neue Bild über das alte stapelt (frag mich nicht, wie ich herausgefunden habe, dass es für die Diskussion nicht relevant ist :). Ich muss auf jeden Fall das alte loswerden, bevor ich das neue Bild einstelle.
Wie kann ich das erreichen?
quelle
android.widget.ImageView
#setBackgroundContextCompat
ohne zeichnen zu könnengetTheme
Du sollst
setImageResource
statt verwendensetBackgroundResource
.quelle
wird zum Einstellen des Bildes in der aktuellen Bildansicht verwendet. Wenn Sie dieses Bild jedoch löschen möchten, können Sie diesen Code wie folgt verwenden:
Jetzt wird das Bild aus Ihrer Bildansicht gelöscht, da der Ressourcenwert auf Null gesetzt wurde.
quelle
ID von ImageView abrufen als
dann benutze
um das Quellbild programmgesteuert anstelle von XML festzulegen.
quelle
Oder versuchen Sie es mit diesem. Für mich funktioniert es gut:
quelle
Ergänzende visuelle Antwort
ImageView
:setImageResource()
(Standardmethode, Seitenverhältnis wird beibehalten)View
:setBackgroundResource()
(Bild ist gestreckt)Beide
Meine ausführlichere Antwort ist hier .
quelle
Wenn Sie in der Bildansicht ein Bild festlegen möchten , das sich in den Mipmap-Verzeichnissen befindet , können Sie dies folgendermaßen tun:
myImageView.setImageDrawable(getResources().getDrawable(R.mipmap.my_picture)
quelle
Schreiben Sie einfach eine Methode zum Ändern der Bildansicht
quelle