我正在使用资源,因为我需要支持多个BuildVariants. 我在Color.kt哪里定义了所有颜色并color.xml像这样从中获取它们
val MyWhiteColor: Color = Color(R.color.my_white_color)
我这样申请
Text(
text = ...,
style = TextStyle(
color = MyWhiteColor
)
)
问题是我得到的是蓝色而不是白色,但是如果我改变颜色不是从color.xml,即像这样
val MyWhiteColor: Color = Color(android.graphics.Color.parseColor("#FFFFFF"))
然后一切正常,我得到白色。
我错过了什么?为什么当我转向color.xml那个我得到蓝色而不是白色?
UPD
<color name="my_white_color">#FFFFFF</color>
看看函数签名
Color(),你应该作为参数传递@ColorInt,而不是@ColorRes。这行不通,你会得到一些任意颜色:如果你的整个项目都是用 Compose 写的,那就拒绝使用
colors.xml,或者尽量少用这个文件。将应用程序的原始颜色值存储在Color.kt.如果您仍然有一些颜色
colors.xml,请使用主题。您可以创建自己的CompositionLocal主题或使用现成的MaterialTheme:Where
getDarkColors()和getLightColors()这些是可组合函数,您可以在其中使用该函数colorResource来获取颜色,例如:在根 Composable 中应用此主题后,您可以从主题中获取颜色,如下所示: