Ответ 1
В xml вы можете установить только String. Но в коде вы можете использовать View.setTag(int value);
, потому что он принимает объект. Чтобы прочитать значение, вам нужно передать его в Integer int value = (Integer)view.getTag();
У меня простой макет, но я могу установить только строковый тег. Как установить целочисленный тег?
<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" />
Однако в моем случае я предпочла установить тег программно:)
В xml вы можете установить только String. Но в коде вы можете использовать View.setTag(int value);
, потому что он принимает объект. Чтобы прочитать значение, вам нужно передать его в Integer int value = (Integer)view.getTag();
Из авторского редактирования я попытался использовать @integer/int2
, чтобы установить тег как целое число, но все же кажется, что getTag()
возвращает тег как String
(по крайней мере, в Jellybean). Integer.parseInt(String)
может преобразовать String
в Integer
, а @integer/int2
может подтвердить, что ваш тег является правильным Integer
. Поэтому, если вы хотите поместить Integer
в тег через XML, это, вероятно, лучший маршрут. Даунсайд, поскольку он использует parseInt
, это, скорее всего, занимает немного больше времени, чем его сохранение как int за все время.
Я использовал следующее, чтобы установить тег в 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
Поставьте тег для этого представления, содержащий строку, который будет получен позже с помощью View.getTag()
или будет найден с помощью View.findViewWithTag()
.
Должно быть строковое значение, используя '\\;'
для вывода символов, таких как '\\n'
или '\\uxxxx'
для символа юникода.
Для получения дополнительной информации перейдите в android: тег