Intereting Posts

Как получить источник ImageView, чтобы изменить его?

Я знаю, что изменение ресурса ImageView не имеет большого значения, просто используя myImageView.setImageResource(mynewImageDrawable)

Но я хочу, чтобы проверить текущий ImageSource, прежде чем изменять его.

В основном, я хочу реализовать свои собственные радиокнопки с помощью imageViews. Поэтому каждый раз, когда нажимается какое-либо изображение, метод oncliked event будет изменять Ресурсы изображения моей группы.

И сожалею о моем бедном английском.

Привет, redsea

Нет функции getDrawableId поэтому вам нужно будет сделать что-то вроде набора тега для ImageView при изменении его drawable. Например, установите идентификатор drawable как тег для ImageView чтобы вы могли просто получить идентификатор drawable из тега.

Как это сделать?

Я бы сказал, что в 90% случаев ваши взгляды не будут иметь никаких тегов, поэтому самый простой способ – считать ваш тег единственным тегом:

 myImageView.setTag(R.drawable.currentImage); //When you change the drawable int drawableId = (Integer)myImageView.getTag(); //When you fetch the drawable id 

Что делать, если у меня уже есть тег в моем представлении

В представлениях Android одновременно могут размещаться несколько тегов, если они имеют уникальный идентификатор. Вам нужно создать уникальный ресурс id и добавить его в качестве первого аргумента в вызов метода setTag . Оставляя код следующим образом:

 myImageView.setTag(R.id.myTagId, R.drawable.currentImage); //Set int drawableId = (Integer)myImageView.getTag(R.id.myTagId); 

Вы хотите сказать, что вы намерены проверить идентификатор ресурса, чтобы определить, выбран ли переключатель или нет? Хотя это, вероятно, может работать, это не очень хороший дизайн. Вообще говоря, вы хотите отделить модель от представления (иначе называемого парадигмой Model-View-Controller ). Для этого у вас может быть группа ваших переключателей, поддерживающая индекс для выбранного элемента, и каждый из ваших элементов хранится в списке. Когда элемент выбран, вы можете определить его индекс, обновить модель группы, а затем обновить пользовательский интерфейс, чтобы отразить это изменение.

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

Фактически после моей попытки, я нахожу, что есть способ получить источник imageView без необходимости использования свойства tag.

Integer src = attrs. GetAttributeResourceValue (" http://schemas.android.com/apk/res/android ", "src", -1);

Первым параметром является пространство имен android а src – имя свойства. Этот метод возвращает идентификатор ресурса изображения, если он нашел или он вернет -1; Надеюсь, это поможет вам и пометьте его как полезный!

Если вы хотите получить src drawable, используйте следующий метод ImageView : http://developer.android.com/reference/android/widget/ImageView.html#getDrawable ()

Вы можете использовать это.

  private Drawable colocaImgen(String nombreFile) { Drawable res1 = null; String uri1 = null; try { //First image uri1 = "@drawable/" + nombreFile; int imageResource1 = getResources().getIdentifier(uri1, null,getApplicationContext().getPackageName()); res1 = getResources().getDrawable(imageResource1); } catch (Exception e) { // TODO Auto-generated catch block //int imageResource1 = context.getResources().getIdentifier(uri1, null, context.getApplicationContext().getPackageName()); res1 = getResources().getDrawable(R.drawable.globo2);// Default image } return res1; } 

затем

 ((ImageView) findViewById(R.id.youNameFile)).setImageDrawable(colocaImgen("NameFile"));