如何正确从资源中获取Color(JetpackCompose)?

Ale*_*nko 4 android-jetpack android-jetpack-compose android-compose-textfield

我需要使用资源来支持不同的颜色BuildVars,所以我有Color.kt定义颜色的文件,问题是如果我从colors.xml这样的资源中获取颜色

val MyWhiteColor: Color = Color(R.color.my_white_color)
Run Code Online (Sandbox Code Playgroud)

并像这样使用它

    Text(
        text = ...,
        style = TextStyle(
            color = MyWhiteColor
        )
    )
Run Code Online (Sandbox Code Playgroud)

但是,如果我将实现更改为,我会得到蓝色而不是白色

val MyWhiteColor: Color = Color(android.graphics.Color.parseColor("#FFFFFF"))
Run Code Online (Sandbox Code Playgroud)

它按预期工作,我得到白色。

我缺少什么?colors.xml为什么当我从颜色中获取值时会转换为蓝色?

Ben*_*ove 6

您无法从 Composable 外部的 XML 资源文件加载,因为 Compose 需要上下文,并且它还必须对配置更改做出反应。

您可以仅在 Color.kt 中定义颜色而不使用 XML 颜色资源,也可以使用以下方式从可组合项中的资源加载:

colorResource(R.color.my_white_color)