Изменение источника ImageView

У меня есть ImageView с исходным изображением, установленным в xml, используя следующий синтаксис:

   

Теперь мне нужно изменить это изображение программным путем. Мне нужно удалить старый образ и добавить новый. Я сделал это так:

 myImgView.setBackgroundResource(R.drawable.monkey); 

Он работает, но я заметил, что андроид складывает новый образ поверх старого (не спрашивайте меня, как я узнал, что это не относится к обсуждению :). Мне нужно избавиться от старого, прежде чем устанавливать новое изображение.

Как я могу это достичь?

Изменение источника ImageView:

Использование setBackgroundResource() :

  myImgView.setBackgroundResource(R.drawable.monkey); 

вы помещаете эту обезьяну в фоновом режиме.

Я предлагаю использовать метод setImageResource() :

  myImgView.setImageResource(R.drawable.monkey); 

или с setImageDrawable() метода setImageDrawable() :

 myImgView.setImageDrawable(getResources().getDrawable(R.drawable.monkey)); 

*** С новым API android API 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)); } 

Вы должны использовать setImageResource вместо setBackgroundResource .

 myImgView.setImageResource(R.drawable.monkey); 

используется для установки изображения в текущем виде изображения, но если вы хотите удалить это изображение, вы можете использовать этот код так:

 ((ImageView) v.findViewById(R.id.ImageView1)).setImageResource(0); 

теперь это удалит изображение из вашего изображения, потому что оно установило значение ресурсов равным нулю.

получить идентификатор ImageView как

 ImageView imgFp = (ImageView) findViewById(R.id.imgFp); 

затем используйте

 imgFp.setImageResource(R.drawable.fpscan); 

вместо исходных изображений вместо XML.

Или попробуй это. Для меня это нормально работает:

 imageView.setImageDrawable(ContextCompat.getDrawable(this, image)); 

Если вы хотите установить в изображении изображение, которое находится внутри mipmap dirs, вы можете сделать это следующим образом:

myImageView.setImageDrawable(getResources().getDrawable(R.mipmap.my_picture)

Просто напишите способ изменения изображения

 public void setImage(final Context mContext, final ImageView imageView, int picture) { if (mContext != null && imageView != null) { try { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { imageView.setImageDrawable(mContext.getResources().getDrawable(picture, mContext.getApplicationContext().getTheme())); } else { imageView.setImageDrawable(mContext.getResources().getDrawable(picture)); } } catch (Exception e) { e.printStackTrace(); } } } 

Дополнительный визуальный ответ

ImageView : setImageResource() (стандартный метод, соотношение сторон сохраняется)

введите описание изображения здесь

View : setBackgroundResource() (изображение растянуто)

введите описание изображения здесь

И то и другое

введите описание изображения здесь

Мой более полный ответ здесь .

  • Папка SRC в Eclipse пуста (class MainActivity не создан) после создания нового проекта андроида с использованием Eclipse
  • Как работать с INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES без удаления
  • Не найден ресурс, который соответствует указанному имени (в диалогеCornerRadius со значением «? Android: attr / dialogCornerRadius»)
  • Скрыть панель уведомлений
  • получить контактную информацию от android contact picker
  • Добавление действия кнопки в пользовательское уведомление
  • Динамическое обновление адаптера AutoCompleteTextView
  • Создать новый проект на Android, Ошибка: Студия Неизвестный хост 'services.gradle.org'
  • Как изменить цвет фона ActionBar ActionBarActivity с помощью XML?
  • Как получить координаты экрана с маркера в google maps v2 android
  • Как отсортировать записи Firebase по двум полям (Android)
  • Interesting Posts

    Цикл «для» добавляет только последний слой ggplot

    В eclipse не удалось ссылаться на проект библиотеки Android в другом проекте Android

    Я не могу начать xterm больше под Cygwin + Xming под Win 7

    Каковы плюсы и минусы использования альтернативного DNS вместо DNS-сервера ISP?

    Код сортировки Excel VBA с пользовательским заказом и значением, содержащим запятые

    Как проверить правильность URL-адреса в Android

    Где установить небольшие программы без инсталляторов в Windows?

    Альтернатива макросам в Visual Studio 2012

    Как безопасно удалить диск eSATA, когда он не находится в диалоговом окне «Безопасное извлечение оборудования»

    Постоянно обновлять пользовательский интерфейс в рабочем streamе Java FX

    Асинхронное и синхронное выполнение, что это значит?

    # 1130 – Host ‘localhost’ не разрешено подключаться к этому серверу MySQL

    JAXB Marshalling Unmarshalling с CDATA

    jQuery Sortable – drag and drop нескольких элементов

    JSTL c: forEach на странице JSP не работает

    Давайте будем гением компьютера.