如何正确从Android资源获取Jetpack Compose的Color?解决颜色显示错误
问题原因与解决办法
你犯了一个常见的错误:直接把资源ID传给了Compose的Color()构造函数。
R.color.my_white_color本质是一个int类型的资源标识(比如类似0x7f060001的数值),并不是实际的ARGB颜色值。Compose的Color(int)构造函数会把这个ID数值当成ARGB颜色解析,所以才会显示出奇怪的蓝色,而不是你定义的白色。
正确的两种写法:
- Compose推荐方式,直接用
colorResource解析资源:
val MyWhiteColor: Color = colorResource(id = R.color.my_white_color)
- 如果需要先获取原生Color的int值(比如非Compose场景配合使用):
// 需要上下文,比如在Activity或Fragment中 val colorInt = context.getColor(R.color.my_white_color) val MyWhiteColor: Color = Color(colorInt)
内容的提问来源于stack exchange,提问作者Sirop4ik
相关产品推荐
相关产品推荐

