2015-11-28 32 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 
    } 
    //... 
} 

但排列並沒有改變。在調試器中,我看到爲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絕對是決心[email protected]

爲什麼會發生這種情況?

我誤解Kotlin lambdas中的某些東西嗎?或者它是Kotlin還是Anko中的錯誤?

+4

這看起來像一個錯誤。我在這裏提出了一個問題:https://youtrack.jetbrains.com/issue/KT-10219 –

回答

1

這實際上是一個確定範圍的錯誤。

corresponding issue已被標記爲已修復,因此修復很可能會出現在下一個版本中。