我正在使用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中的错误?