Зачем нужен AttributeSet в View

«Зачем нужен AttributeSet в View» — вопрос из категории UI и Views, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

AttributeSet позволяет получить XML-атрибуты View при её создании. Когда система разбирает XML-разметку, она передает все атрибуты в виде AttributeSet в конструктор View. Это позволяет кастомизировать View прямо из XML.

Пример:

class CustomView(context: Context, attrs: AttributeSet) : View(context, attrs) {
    init {
        val typedArray = context.obtainStyledAttributes(attrs, R.styleable.CustomView)
        val customColor = typedArray.getColor(R.styleable.CustomView_customColor, Color.RED)
        typedArray.recycle()

        setBackgroundColor(customColor)
    }
}

В XML:

<com.example.CustomView
    app:customColor="@color/blue" />

Без AttributeSet мы не смогли бы передавать параметры из XML в код.