Anko布局 - 在applyRecursively中区分布局

时间:2017-06-02 09:23:14

标签: android kotlin anko

区分我想要applyRecursively {}某些观点的最佳方法是什么?例如。我有几个textViews,不想为它们创建单独的容器(平面层次结构!),但我知道有些需要例如特定的textSize,有些需要特定的颜色。我应该以特定方式生成ids吗?对于某些情况(当一些样式一起使用时)我当然可以构成一个小函数:

private fun ViewManager.bigTextView(
    content: String, 
    init: (@AnkoViewDslMarker TextView).() -> Unit) = 
    textView(content) {
        init()
        typeface = medium
        textSize = 16f
    }

但什么时候它更通用?我被建议也许标签会做得更好。

1 个答案:

答案 0 :(得分:2)

我可以建议,您可以为需要应用的每种样式编写一组扩展函数,然后在DSL中创建视图层次结构时调用它们。对TextView s:

这样的事情
fun TextView.makeBig() {
    typeface = medium
    textSize = 16f
}

然后在你的DSL中:

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

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