Я имею ImageView
с набором исходного изображения в xml использование следующего синтаксиса:
<ImageView
android:id="@+id/articleImg"
style="@style/articleImgSmall_2"
android:src="@drawable/default_m" />
Теперь я должен изменить это изображение программно. То, что я должен сделать, удаляют старое изображение и добавляют новое все же. То, что я сделал, является этим:
myImgView.setBackgroundResource(R.drawable.monkey);
Это работает, но я заметил, что андроид складывает новое изображение сверху старого (не спрашивайте меня, как я узнал, что это не важно для обсуждения :). Я определенно должен избавиться от старого прежде, чем установить новое изображение.
Как я могу достигнуть этого?
Используя setBackgroundResource()
метод:
myImgView.setBackgroundResource(R.drawable.monkey);
вы помещаете эту обезьяну в фон.
Я предлагаю использовать setImageResource()
метод:
myImgView.setImageResource(R.drawable.monkey);
или setImageDrawable()
метод:
myImgView.setImageDrawable(getResources().getDrawable(R.drawable.monkey));
getResources().getDrawable()
теперь устарел. Вот пример, как использовать сейчас:myImgView.setImageDrawable(getResources().getDrawable(R.drawable.monkey, getApplicationContext().getTheme()));
и как проверить для старых версий API:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
myImgView.setImageDrawable(getResources().getDrawable(R.drawable.monkey, getApplicationContext().getTheme()));
} else {
myImgView.setImageDrawable(getResources().getDrawable(R.drawable.monkey));
}
Вы должны использовать setImageResource
вместо setBackgroundResource
.