首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jetpack组合中六角字符串的颜色

jetpack组合中六角字符串的颜色
EN

Stack Overflow用户
提问于 2020-02-16 10:19:17
回答 8查看 21.3K关注 0票数 45

如何解析十六进制字符串,如#9CCC65颜色类中的jetpack组合。

P.S: jetpack组合软件包中似乎缺少选项

当前解决方案:从标准颜色类导出parseColor()方法。

代码语言:javascript
复制
@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")
}
EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2020-03-01 20:32:01

可以将此对象类与getColor方法一起使用。

代码语言:javascript
复制
object HexToJetpackColor {
    fun getColor(colorString: String): Color {
            return Color(android.graphics.Color.parseColor("#" + colorString))
    }
}

或者我们可以使用扩展函数

代码语言:javascript
复制
fun Color.fromHex(color: String) = Color(android.graphics.Color.parseColor("#" + colorString))

Jetpack类,即androidx.ui.graphics.Color只在构造函数中使用RGB、ARGB、ColorSpace和colorInt。请参阅:Color.kt

因此,这里我们直接从返回parseColor()android.graphics.Color访问colorInt方法。

因此,可以使用parseColor()方法获取colorInt,然后将其提供给Jetpack类以获取androidx.ui.graphics.Color对象。

票数 40
EN

Stack Overflow用户

发布于 2020-12-11 15:03:44

而不是作为字符串传递,而是作为十六进制传递。例如,如果您想要这个#9CCC65颜色,只需删除前面的#并将其替换为0xFF。示例

代码语言:javascript
复制
val PrimaryBlue = Color(0xFF9CCC65)
票数 64
EN

Stack Overflow用户

发布于 2021-05-31 14:55:07

Int.dp类似,可以有String.color扩展属性。

代码语言:javascript
复制
val String.color 
    get() = Color(android.graphics.Color.parseColor(this))

这可以用作彩色十六进制String上的成员属性。

代码语言:javascript
复制
"#FF0000".color
票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60247480

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档