Anko:内在的适用范围,令人困惑的财产解决方案

时间:2015-11-28 23:06:32

标签: android kotlin anko

我正在使用Anko DSL编写Android版面。 在定义TextView时,我想让它居中对齐,所以我写了这个:

verticalLayout {
    textView(R.string.txt_greeting).apply {
        gravity = Gravity.CENTER_HORIZONTAL // <- this should have changed the alignment
        textSize = 20.0f
    }
    //...
}

但是对齐并没有改变。在调试器中,我看到为LinearLayout的父TextView设置了引力。

将语句更改为

textView(R.string.txt_greeting).let { it.gravity = Gravity.CENTER_HORIZONTAL }

textView(R.string.txt_greeting).apply { this@apply.gravity = Gravity.CENTER_HORIZONTAL }

甚至

textView(R.string.txt_greeting).apply { this.gravity = Gravity.CENTER_HORIZONTAL }

解决了问题,因此在原始代码中,隐式this肯定已解析为this@verticalLayout

为什么会这样?

我是否误解了Kotlin lambdas中的某些内容,或者它是Kotlin或Anko中的错误?

1 个答案:

答案 0 :(得分:1)

这实际上是范围内的一个错误。

corresponding issue已被标记为已修复,因此修复可能会出现在下一个版本中。