gpt4 book ai didi

android - Anko:应用的内部范围,令人困惑的属性解析

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:12:30 24 4
gpt4 key购买 nike

我正在使用 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 lambda 中的某些内容,或者它是 Kotlin 或 Anko 中的错误?

最佳答案

这实际上是范围界定中的错误。

corresponding issue已标记为已修复,因此修复可能会出现在下一个版本中。

关于android - Anko:应用的内部范围,令人困惑的属性解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33977484/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com