Изменение источника ImageView
У меня есть ImageView
с исходным изображением, установленным в xml, используя следующий синтаксис:
<ImageView
android:id="@+id/articleImg"
style="@style/articleImgSmall_2"
android:src="@drawable/default_m" />
Теперь мне нужно изменить это изображение программно. Мне нужно удалить старый образ и добавить новый. Я сделал это:
myImgView.setBackgroundResource(R.drawable.monkey);
Это работает, но я заметил, что андроид складывает новое изображение поверх старого (не спрашивайте меня, как я выяснил, что это не относится к обсуждению:). Я определенно должен избавиться от старого, прежде чем устанавливать новое изображение.
Как я могу это достичь?
Ответы
Ответ 1
Изменение источника ImageView:
Используя метод setBackgroundResource()
:
myImgView.setBackgroundResource(R.drawable.monkey);
вы помещаете эту обезьяну в фоновый режим.
Я предлагаю использовать метод setImageResource()
:
myImgView.setImageResource(R.drawable.monkey);
или setImageDrawable()
метод:
myImgView.setImageDrawable(getResources().getDrawable(R.drawable.monkey));
*** С новым API-интерфейсом Android 22 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);
}
Ответ 2
Предполагается использовать setImageResource
вместо setBackgroundResource
.
Ответ 3
myImgView.setImageResource(R.drawable.monkey);
используется для установки изображения в текущем виде изображения, но если вы хотите удалить это изображение
то вы можете использовать этот код, например:
((ImageView) v.findViewById(R.id.ImageView1)).setImageResource(0);
теперь это удалит изображение из вашего изображения, потому что оно установило значение ресурсов равным нулю.
Ответ 4
получить идентификатор ImageView как
ImageView imgFp = (ImageView) findViewById(R.id.imgFp);
затем используйте
imgFp.setImageResource(R.drawable.fpscan);
чтобы установить исходное изображение программным способом вместо XML.
Ответ 5
Или попробуйте это. Для меня это нормально работает:
imageView.setImageDrawable(ContextCompat.getDrawable(this, image));
Ответ 6
Если вы хотите установить в изображении изображение, находящееся внутри mipmap dirs, вы можете сделать это следующим образом:
myImageView.setImageDrawable(getResources().getDrawable(R.mipmap.my_picture)