Как получить атрибут XML для настраиваемого элемента управления - PullRequest
4 голосов
/ 17 марта 2010

Я создал элемент управления поля со списком с текстом редактирования и спиннером. Я пытаюсь передать атрибут android: prompt на спиннер, что означает, что мне нужно поймать его в конструкторе, который передает мой 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:

Спасибо

Ответы [ 2 ]

6 голосов
/ 23 апреля 2010

Я только что написал ответ, объясняющий весь процесс для с использованием XML с пользовательскими элементами пользовательского интерфейса . В вашем случае нет необходимости объявлять стиль, так как вам не нужны пользовательские атрибуты. Использование android.R.attr.prompt в качестве int id будет работать нормально. R.styleable.className_attributeName будет работать, только если вы определили свои атрибуты в стилях и извлекли их, передав R.styleable.className в obtainStyledAttributes.

0 голосов
/ 17 марта 2010
  1. Определить стиль в xml. Например: <declare-styleable name="ComboBox"> <attr name="prompt" format="reference"/> </declare-styleable>

  2. Чтобы получить значение в конструкторе, используйте: TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.ComboBox);

Используйте методы получения TypedArray для получения определенного атрибута.

...