【问题标题】:css style hex strings and Color.decodecss 样式的十六进制字符串和 Color.decode
【发布时间】:2011-01-21 08:26:17
【问题描述】:

this article 建议您可以使用 Color c = Color.decode("FF0096"); 但是这可以理解抛出异常

Caused by: java.lang.NumberFormatException: For input string: "FF0096"
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
    at java.lang.Integer.parseInt(Integer.java:449)
    at java.lang.Integer.valueOf(Integer.java:528)
    at java.lang.Integer.decode(Integer.java:958)
    at java.awt.Color.decode(Color.java:707)

将“#FF0096”或“FF0096”格式的字符串转换为java awt Color的最佳方法是什么?

【问题讨论】:

    标签: java colors hex


    【解决方案1】:
    Color c = Color.decode("0xFF0096");
    

    Color c = Color.decode("#FF0096");
    

    Color c = new Color(0xFF0096);
    

    【讨论】:

    • 谢谢您,先生。
    • 最多 6 个十六进制数字!我无法指定 alpha。
    【解决方案2】:

    如果指定的字符串不能解释为十进制、八进制或十六进制整数,Color.decode 方法将抛出 NumberFormatException

    字符串“FF0096”没有前缀00x 将被解释为不起作用的base 10 表示。

    【讨论】:

    • 你错说FF0096前缀0x不起作用。
    • @pstanton:感谢您指出......这是一个错字。我已经更正了。
    • 0 前缀表示八进制,不太可能有人愿意用它来解码颜色
    【解决方案3】:

    我一直在寻找在 Android 中执行此操作的类似方法。由于某种原因,我找不到Color.decode(),所以我寻找了替代方案。如果要在 Android 中使用十六进制字符串来表示颜色,可以执行以下操作:

    String hexColor = "#142b44";
    View row = findViewById(R.id.row);
    int color = Color.parseColor(hexColor);
    row0.setBackgroundColor(color);
    

    更多信息请访问Color#parseColor

    【讨论】:

    • 这个问题是关于java.awt.Color,而你正在使用android.graphics.Color
    猜你喜欢
    • 1970-01-01
    • 2019-07-27
    • 2011-05-04
    • 2020-11-07
    • 1970-01-01
    • 2010-10-04
    • 2012-08-15
    • 1970-01-01
    相关资源
    最近更新 更多