动态设置器自定义视图

时间:2019-11-28 14:33:27

标签: android kotlin android-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关于此主题的文档,但是我不知道是否应该具有与该属性相对应的属性。

1 个答案:

答案 0 :(得分:1)

一种方法是:

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设置文本(属性)。