当我尝试运行以下代码时出现上述错误:
int colourInt = Color.parseColor(colour.getHexValue());
违规的十六进制值为ee3090b0
。有没有办法可以将颜色十六进制值转换为等价的整数并保持alpha值?
我已经尝试按照post中提出的建议,但它无法正常工作......
答案 0 :(得分:47)
public static int parseColor(String colorString)
解析颜色字符串,并返回相应的color-int。如果 无法解析字符串,抛出 IllegalArgumentException 异常。 支持的格式为:#RRGGBB #AARRGGBB' red',' blue',' green', ' black',' white',' grey',' cyan',' magenta',' yellow& #39;,' lightgray', '深灰'
您的方法可能会返回一个不以#
开头的字符串。
答案 1 :(得分:0)
将其包装在try catch块中,并在catch块中设置默认颜色以处理异常
例如,我正在从Firebase远程配置中解析一种颜色,如果该颜色的获取引发了hgrc
,则我将该颜色设置为我的应用程序中的默认颜色。
IllegalArgumentException
这样做可以避免应用程序致命崩溃
答案 2 :(得分:0)
我想添加一些已被接受的答案。在尝试使用以Color.parseColor("#000")
开头的#
使用黑色时,我遇到了类似的异常。因此,问题在您的parseColor
方法内部,它仅接受六位数的彩色十六进制代码,如果它小于或大于此值,则给出例外。我将其更改为#121212
(黑色),它对我有用。