Значение перечисления атрибута ссылки

Можно ли ссылаться на значение перечисления при поставке параметров стиля? Например, мы можем сделать:

<!-- layouts.xml -->
<textview android:text="@string/str">
<!-- values.xml -->
<item type="string" name="str">hi</item>
</textview>

Это прекрасно работает со строками, целыми числами, размерами и т.д., но мне нужно ссылаться на значение enum - например, атрибут visibility. Я ищу что-то вроде:

<!-- layouts.xml -->
<textview android:visibility="@????/viz">
<!-- values.xml -->
<item type="?????" name="viz">gone</item>
</textview>

visibility - только пример - это может быть любой другой атрибут, основанный на перечислении.

Единственным обходным решением, которое я нашел до сих пор, является использование стилей

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

Другой вариант: если есть способ ссылки на отдельные элементы стиля. Что-то вроде:

Но я думаю, что вышеупомянутое еще менее вероятно, что это возможно.

1 ответ

Каждое перечисление фактически представляет собой набор именованных целых чисел. Например, атрибут visibility объявляется следующим образом:

<attr name="visibility">
 <enum name="visible" value="0">
 <enum name="invisible" value="1">
 </enum></enum></attr>

Таким образом, вы можете ссылаться на элемент перечисления непосредственно по его значению. Что-то вроде этого:

<!-- values.xml -->
<item name="viz" type="integer">1</item>
<!-- layouts.xml -->

Я только что проверил его на своем телефоне, и он работает хорошо.

licensed under cc by-sa 3.0 with attribution.