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 ラムダの何かを誤解していますか、それとも Kotlin または Anko のバグですか?