首页 > 解决方案 > Android - 将颜色从 String 转换为 Int 的更智能方法

问题描述

Color.parseColor("#444444")按预期工作。但是,... Color.parseColor("#444")抛出异常。

是否有更智能的颜色解析的内置方法?不幸的是,我从后端以不同的格式获取它们。

标签: android

解决方案


根据w3_spec对于 3 位十六进制颜色,您只需要复制每个值,如下所示

#F3A -> #FF33AA

因为您从后端获取值,您可以尝试应用正则表达式来转换Color.parseColor之前的值,如下所示(用 Kotlin 编写)

val color = "#FA3"
var colorConverted = color.replace("#([0-9a-fA-F])([0-9a-fA-F])([0-9a-fA-F])".toRegex(), "#$1$1$2$2$3$3")

这是游乐场的链接,希望对您有所帮助。


推荐阅读