AttributeSet
содержит в себе значения атрибутов view, которые задаются в xml. Значения можно получить из AttributeSet
напрямую, но это не рекомендуется делать, потому что в этом случае не резолвятся ссылки на ресурсы и не применяются значения стилей. Для получения значений атрибутов следует использовать метод obtainStyledAttributes().
obtainStyledAttributes()
принимает параметрами:• объект
AttributeSet
, который был передан в конструктор view. Этот параметр может быть null
;• массив интов
attrs
, содержащий IDs атрибутов, значения которых нужно получить. С примером из предыдущего поста это будет ID элемента <declare-styleable>
: R.styleable.ValidatableInput
;• переменную
defStyleAttr
типа int
, являющуюся ID атрибута в текущей теме, который содержит ссылку на style
. Значения из этого стиля будут использованы как дефолтные для атрибутов, которых нет в объекте AttributeSet
. Если этот параметр имеет значение 0, то система не будет его использовать.• переменную
defStyleRes
типа int
, являющуюся ID ресурса style
, который будет использоваться для дефолтных значений. По сути предыдущий параметр defStyleAttr
является ссылкой на ресурс стиля, который может быть передан напрямую параметром defStyleRes
. Этот параметр рассматривается только если defStyleAttr = 0
. defStyleRes
также может принимать значение 0.