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