Mam ImageView
z obrazem źródłowym ustawionym w xml przy użyciu następującej składni:
<ImageView
android:id="@+id/articleImg"
style="@style/articleImgSmall_2"
android:src="@drawable/default_m" />
Teraz muszę programowo zmienić ten obraz. Muszę jednak usunąć stary obraz i dodać nowy. Zrobiłem to:
myImgView.setBackgroundResource(R.drawable.monkey);
Działa, ale zauważyłem, że Android układa nowy obraz na starym (nie pytaj mnie, jak się dowiedziałem, że nie ma znaczenia w dyskusji :). Zdecydowanie muszę pozbyć się starego przed ustawieniem nowego obrazu.
Jak mogę to osiągnąć?
android
imageview
android-imageview
łasica
źródło
źródło
android.widget.ImageView
#setBackgroundContextCompat
dostać się bezgetTheme
Powinieneś użyć
setImageResource
zamiastsetBackgroundResource
.źródło
służy do ustawienia obrazu w bieżącym widoku obrazu, ale jeśli chcesz usunąć ten obraz, możesz użyć tego kodu, takiego jak:
teraz spowoduje to usunięcie obrazu z widoku obrazu, ponieważ ustawiono wartość zasobów na zero.
źródło
uzyskaj identyfikator ImageView jako
następnie użyj
programowo ustawić obraz źródłowy zamiast z XML.
źródło
Lub spróbuj tego. Dla mnie działa dobrze:
źródło
Uzupełniająca odpowiedź wizualna
ImageView
:setImageResource()
(metoda standardowa, proporcje są zachowane)View
:setBackgroundResource()
(obraz jest rozciągnięty)Obie
Moja pełniejsza odpowiedź jest tutaj .
źródło
Jeśli chcesz ustawić w widoku obrazu obraz znajdujący się w katalogach mipmap , możesz to zrobić w następujący sposób:
myImageView.setImageDrawable(getResources().getDrawable(R.mipmap.my_picture)
źródło
Po prostu napisz metodę zmiany widoku obrazu
źródło