Подтвердить что ты не робот

Как установить целочисленный тег в виджет в файле макета xml?

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

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

ОБНОВЛЕНИЕ

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

RES/значения/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" />

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

4b9b3361

Ответ 1

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

Ответ 2

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

Ответ 3

Я использовал следующее, чтобы установить тег в 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

Ответ 4

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

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

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