动态 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。
我开始在 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。