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