网页颜色需#开头、大写、6位(RGB)或8位(ARGB)十六进制,应先用color & 0xFFFFFF掩码取RGB,再用String.format("%06X", ...)补零大写;ARGB则用"%08X"格式化原值。

直接调用 Integer.toHexString() 会得到不带前导零、不含“#”号的纯小写十六进制字符串,而网页颜色要求是 6 位(或 8 位含 alpha)、大写、带 # 的格式,比如 #FF5733。需要手动补零、转大写、加前缀。
补齐为 6 位(RGB)或 8 位(ARGB)
颜色值本质是 int(32 位),但通常只用低 24 位表示 RGB,或低 32 位表示 ARGB。toHexString() 输出时会自动省略高位零,所以必须手动补足:
- 对于 RGB(不透明):取
color & 0xFFFFFF,再格式化为 6 位 - 对于 ARGB(含透明度):直接用原值,格式化为 8 位
- 推荐用
String.format("%06X", color & 0xFFFFFF)补零并大写;%08X用于 ARGB
处理 alpha 通道(可选)
Android 中 Color.RED 这类常量默认带 alpha(如 0xFFFF0000),若只想要 RGB 部分,必须屏蔽高 8 位:
-
int rgb = color & 0x00FFFFFF;—— 清除 alpha,保留 RGB - 若需保留透明度用于 CSS 的
rgba()或 8 位 hex(如#80FF5733),则直接用原值 +%08X
添加 # 号并确保大写
网页颜色必须以 # 开头,且惯例使用大写字母(非强制但通用)。toHexString() 返回小写,也不带 #,所以不能直接用:
- 错误写法:
"#" + Integer.toHexString(color)→ 可能得#ff5733或#ff573(位数不足) - 正确写法:
"#" + String.format("%06X", color & 0xFFFFFF)→ 稳定输出#FF5733
不复杂但容易忽略细节,关键是先掩码再格式化,而不是依赖 toHexString 的原始输出。










