Как получить атрибут XML для настраиваемого элемента управления
Я создал элемент управления со списком с помощью edittext и spinner.
Я пытаюсь передать атрибут android: prompt на
spinner, что означает, что мне нужно поймать его в конструкторе, который
передает мой AttributeSet и устанавливает его на счетчик.
Я не могу понять, как получить значение подсказки.
Я пытаюсь,
int[] ra = { android.R.attr.prompt };
TypedArray ta = context.getTheme().obtainStyledAttributes(ra);
int id = ta.getResourceId(0, 0);
Я возвращаюсь 0, а это значит, что он не нашел атрибут.
Я также сделал ta.count(), который вернул 0. Так что я ничего не получаю.
Мой XML просто определяет значение android: prompt.
Спасибо
Ответы
Ответ 1
Я просто написал ответ, объясняющий весь процесс используя XML с пользовательскими элементами пользовательского интерфейса. В вашем случае нет необходимости объявлять стиль, поскольку вам не нужны специальные атрибуты. Используя android.R.attr.prompt
, поскольку int id будет работать нормально. R.styleable.className_attributeName
будет работать только в том случае, если вы определили свои атрибуты в стилевом стиле, и вы их получили, передав R.styleable.className
в obtainStyledAttributes
.
Ответ 2
-
Определите стиль в xml. Например:
<declare-styleable name="ComboBox">
<attr name="prompt" format="reference"/>
</declare-styleable>
-
Чтобы получить значение в конструкторе, используйте:
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.ComboBox);
Используйте методы ввода TypedArray, чтобы получить конкретный атрибут.