Anko layouts - applyRecursively 中区分布局
Anko layouts - distinguishing layouts in applyRecursively
区分我想 applyRecursively {}
某些观点的最佳方法是什么?例如。我有几个 textViews
,不想为它们创建单独的容器(平面层次结构!),但我仍然知道有些需要,例如一个特定的文本大小,有些需要有特定的颜色。我应该以特定方式生成 ids
吗?对于某些情况(当一些样式一起使用时)我当然可以编一个小函数:
private fun ViewManager.bigTextView(
content: String,
init: (@AnkoViewDslMarker TextView).() -> Unit) =
textView(content) {
init()
typeface = medium
textSize = 16f
}
但是当它更通用时呢?有人建议我也许标签会做得更好。
我可以建议的是,您可以为需要应用的每种样式编写一组扩展函数,然后在 DSL 中创建视图层次结构时调用它们。 TextView
s 是这样的:
fun TextView.makeBig() {
typeface = medium
textSize = 16f
}
然后在您的 DSL 中:
textView(R.string.example) {
makeBig()
}
这种方法不需要您生成 ID 或设置标签,对于 Kotlin 来说它看起来或多或少是自然和惯用的。
区分我想 applyRecursively {}
某些观点的最佳方法是什么?例如。我有几个 textViews
,不想为它们创建单独的容器(平面层次结构!),但我仍然知道有些需要,例如一个特定的文本大小,有些需要有特定的颜色。我应该以特定方式生成 ids
吗?对于某些情况(当一些样式一起使用时)我当然可以编一个小函数:
private fun ViewManager.bigTextView(
content: String,
init: (@AnkoViewDslMarker TextView).() -> Unit) =
textView(content) {
init()
typeface = medium
textSize = 16f
}
但是当它更通用时呢?有人建议我也许标签会做得更好。
我可以建议的是,您可以为需要应用的每种样式编写一组扩展函数,然后在 DSL 中创建视图层次结构时调用它们。 TextView
s 是这样的:
fun TextView.makeBig() {
typeface = medium
textSize = 16f
}
然后在您的 DSL 中:
textView(R.string.example) {
makeBig()
}
这种方法不需要您生成 ID 或设置标签,对于 Kotlin 来说它看起来或多或少是自然和惯用的。