我是一名iOS开发人员,目前正在使用Kotlin学习安卓开发。我有一个对象/共享实例(iOS术语):
object AppAppearance {
val cornerRadius = "10dp"
}

如何在XML文件中访问上面的内容?
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="${AppAppearance.cornerRadius}"/> // <---- This doesn't work
<solid android:color="@android:color/holo_green_dark"/>
</shape>

发布于 2022-10-14 13:33:53
如果要在XML中使用常量,则应该用XML而不是Kotlin定义它们。例如,在res/values/中创建一个名为appearance.xml的文件并放置:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="cornerRadius">10dp</dimen>
</resources>可以将此文件中的其他行项放在resources块中。
在你使用它的文件中:
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="@dimen/cornerRadius"/>
<solid android:color="@android:color/holo_green_dark"/>
</shape>可以使用数据绑定从Kotlin读取值,但这并不适用于常量。它读取附加视图的活动/片段的成员属性或函数。
如果所有这一切看起来复杂和混乱,那是因为它是。喷气式组合 UI系统是他们用Kotlin代码直接创建UI的新方法,所以您不必在语言之间来回跳。但它也是一个完全不同的UI模型( UI是根据逻辑构建的数据模型,而不是您必须将UI与数据连接起来),所以它不是直接的替代。不过,你可能会发现你更喜欢它。
https://stackoverflow.com/questions/74069864
复制相似问题