动态 setter 自定义视图

Dynamic setter custom View

我开始在 Android 上创建图形组件,我遇到了一个我认为非常简单的问题。

传递到我的自定义布局的属性在 XML 中被读取和识别。 但是,我希望动态传递这些属性。

这是我的代码:

    <declare-styleable name="MyAppBarLayout">
        <attr name="text" format="string" />
    </declare-styleable>
class MyAppBarLayout(context: Context, attrs: AttributeSet): AppBarLayout(context, attrs) {


    init {
        val view = inflate(context, R.layout.my_appbar, this)

        val attributes = context.obtainStyledAttributes(attrs, R.styleable.MyAppBarLayout)

        view.text_subtitle.text = attributes.getString(R.styleable.MyAppBarLayout_text)

        attributes.recycle()
    }

}

我想用这个视图做的是:

var myAppBar.text = "WARNING"

如何设置动态设置器? 我看过 Google 关于这个主题的文档,但我不明白我是否应该有一个对应于 属性 的属性。

一种方法是:

class MyAppBarLayout(context: Context, attrs: AttributeSet): AppBarLayout(context, attrs) {
    private var text: String? = null

    ...
    fun setText(text: String) {
        view.sutitle.text = text
    }
}

// wherever you want to set the text
var myAppBar.text = "WARNING"

您的做法是从布局设置文本(属性)xml。