Как установить целочисленный тег для виджета в XML-файле макета? - PullRequest
20 голосов
/ 14 февраля 2012

У меня простой макет, но я могу установить только строковый тег.Как установить целочисленный тег?

<ImageView
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:tag="1"
  android:src="@drawable/image" />

ОБНОВЛЕНИЕ

Я узнал, как установить целочисленные теги в макете XML.Нам нужно указать целочисленную переменную в любом файле ресурсов XML.Это должно выглядеть так:

res / values ​​/ value.xml:

<?xml version="1.0" encoding="UTF-8"?>
<resources>
<integer name="int1">15</integer>
<integer name="int2">1</integer>
</resources>

И теперь мы можем использовать "@ integer / int1" или "@ integer / int2" кактеги для наших xml-виджетов, например:

<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:tag="@integer/int2"
android:src="@drawable/image" />

Однако в моем случае я предпочел установить тег программно:)

Ответы [ 4 ]

15 голосов
/ 14 февраля 2012

В XML вы можете установить только строку.Но в коде вы можете использовать View.setTag(int value);, потому что он принимает Object.Чтобы прочитать значение, вам нужно привести его к Integer int value = (Integer)view.getTag();

4 голосов
/ 12 сентября 2012

Из редактирования автора я попытался использовать @integer/int2, чтобы установить тег как целое число, но все же кажется, что getTag() возвращает тег как String (по крайней мере, в Jellybean).Integer.parseInt(String) может преобразовать String в Integer, а @integer/int2 может подтвердить, что ваш тег является правильным Integer.Поэтому, если вы хотите поместить Integer в тег через XML, это, вероятно, лучший маршрут.Недостаток: поскольку он использует parseInt, он, вероятно, займет немного больше времени, чем все время хранится в виде целого числа.

2 голосов
/ 08 мая 2015

Я использовал следующее для настройки тега в xml и обработки его позже в коде:

<?xml version="1.0" encoding="UTF-8"?>
<resources>
<string name="item_tag">1</string>
</resources>

<!-- TextView with Tag -->
<TextView
android:id="@+id/item_with_tag"
android:tag="@string/item_tag"/>

// retrieve the tag
int itemTag = Integer.valueOf((String) textView.getTag()); // itemTag == 1
0 голосов
/ 14 февраля 2012

Укажите тег для этого представления, содержащий строку, который будет получен позже с помощью View.getTag() или для поиска с помощью View.findViewWithTag().

Должно быть строковым значением, используя '\\;' для экранирования таких символов, как '\\n' или '\\uxxxx' для символа юникода.

Для получения дополнительной информации перейдите на Android: тег

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...