我开始在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关于此主题的文档,但是我不知道是否应该具有与该属性相对应的属性。
答案 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设置文本(属性)。