Пишу макет Android с помощью Anko DSL. При определении 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 { [email protected] = Gravity.CENTER_HORIZONTAL }
и даже
textView(R.string.txt_greeting).apply { this.gravity = Gravity.CENTER_HORIZONTAL }
решает проблему, поэтому в исходном коде неявный this
определенно разрешен до this@verticalLayout
.
Почему это происходит?
Я что-то неправильно понимаю в лямбдах Kotlin или это ошибка в Kotlin или Anko?