安科:适用的内部范围,混淆财产的决议

我正在使用Anko DSL编写Android布局。 在定义一个TextView ,我想让它中心对齐,所以我这样写:

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

但是队列并没有改变。 在调试器中,我看到重力是为TextView的父LinearLayout设置的。

将语句更改为

 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 lambda中的某些内容,或者是Kotlin还是Anko中的错误?

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

相应的问题已被标记为已修复,因此修补程序可能会出现在下一个版本中。