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 中创建视图层次结构时调用它们。 TextViews 是这样的:

fun TextView.makeBig() {
    typeface = medium
    textSize = 16f
}

然后在您的 DSL 中:

textView(R.string.example) {
    makeBig()
}

这种方法不需要您生成 ID 或设置标签,对于 Kotlin 来说它看起来或多或少是自然和惯用的。