Как получить атрибут 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, чтобы получить конкретный атрибут.