2015-11-28 16 views
5

私はAnko DSLを使用してAndroidレイアウトを作成しています。 TextViewを定義するとき 、私はそれを中央揃えにしたかったので、私はこれを書いた:Anko:適用範囲が混乱しているプロパティ解決の内部範囲

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 { [email protected] = Gravity.CENTER_HORIZONTAL } 

とさえ

textView(R.string.txt_greeting).apply { this.gravity = Gravity.CENTER_HORIZONTAL } 

のいずれかに文を変更

は、このように、元のコードでは暗黙のthisは間違いなく[email protected]に解決され、問題を解決します。

どうしてですか?

私はKotlin lambdasで何かを誤解していますか、それともKotlinまたはAnkoのバグですか?

+4

これはバグのようです。私はここに問題を提出した:https://youtrack.jetbrains.com/issue/KT-10219 –

答えて

1

実際にはスコープのバグでした。

corresponding issueは修正済みとマークされているため、修正は次のリリースで表示される可能性があります。