我有一个带有一些自定义属性的自定义视图。
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
设置的属性?
答案 0 :(得分:0)
在子视图膨胀之前,您无法从父级检索属性。
因此,您必须将它们存储在ChildCustomView字段中,以及SomeParentCustomView的onFinishInflate()
中,并通过属性访问权限或getter来检索它们。