如何在Jetpack Compose的Color类中解析十六进制字符串(例如
#9CCC65
)。
P.S:在Jetpack Compose包中,选项似乎已经消失了。
当前解决方法:
从标准的Color类中导出parseColor()
方法。
@ColorInt
fun parseColor(@Size(min = 1) colorString: String): Int {
if (colorString[0] == '#') { // Use a long to avoid rollovers on #ffXXXXXX
var color = colorString.substring(1).toLong(16)
if (colorString.length == 7) { // Set the alpha value
color = color or -0x1000000
} else require(colorString.length == 9) { "Unknown color" }
return color.toInt()
}
throw IllegalArgumentException("Unknown color")
}
Long
类型,然后将该Long
值传递给Color()
函数。 - CommonsWareparseColor()
方法。虽然目前它能正常工作,但我认为 Jetpack Compose 团队应该添加这个方法。 - Vipul Asrijava.lang.NumberFormatException
异常。 - Vipul AsriparseColor()
中所见几乎相同。如果Compose团队添加了对此类颜色字符串的支持,我不会争论,但如果他们决定这超出了范围并且可以被应用程序或其他非Compose库轻松处理,我也不会感到惊讶。 - CommonsWare