Anko布局 – 区别布局applyRecursively

什么是区分我想要应用的一些观点的最好方法是什么? 例如,我有几个textViews ,不想为他们创建单独的容器(扁平层次!),但我仍然知道一些需要有例如一个特定的textSize,有些需要有特定的颜色。 我应该以特定的方式生成ids吗? 对于一些情况(当一些样式一起使用时),我当然可以组成一个小功能:

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

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

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

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

然后在你的DSL:

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

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