在chid自定义视图中获取视图属性

时间:2019-03-27 15:37:57

标签: android android-custom-view

我有一个带有一些自定义属性的自定义视图。

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 :(得分:0)

在子视图膨胀之前,您无法从父级检索属性。

因此,您必须将它们存储在ChildCustomView字段中,以及SomeParentCustomView的onFinishInflate()中,并通过属性访问权限或getter来检索它们。