Получить атрибуты представления в пользовательском представлении chid - PullRequest
0 голосов
/ 27 марта 2019

У меня есть пользовательское представление с некоторыми пользовательскими атрибутами.

class SomeCustomView @JvmOverloads constructor(
        context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
) : ConstraintLayout(context, attrs, defStyleAttr) {

Понятно, как получить атрибуты здесь:

val a = context.theme.obtainStyledAttributes(attrs, R.styleable.SomeCustomView, 0, 0)
try {
    someAttribute = a.getInt(R.styleable.SomeCustomView_swomeAttribute, DEFAULT_VALUE)
    //...
} finally {
    a.recycle()
}

Компоновка представления завышена на
inflate(context, R.layout.some_view, this)

Дело в том, чтоR.layout.some_view содержит другое пользовательское представление в качестве одного из его дочерних элементов, которое не должно отображаться (ChildCustomView).

Вопрос в том, как получить атрибуты, установленные для SomeCustomView внутри ChildCustomView?

1 Ответ

0 голосов
/ 27 марта 2019

Невозможно извлечь атрибут из родительского элемента, пока дочернее представление не будет раздутым.

Таким образом, вы должны сохранить их в полях ChildCustomView и onFinishInflate() SomeParentCustomView, получить их с помощью доступа к свойству или получения.

...