Answers:
尝试Color
类方法:
public static int parseColor (String colorString)
支持的格式为:#RRGGBB #AARRGGBB'红色','蓝色','绿色','黑色','白色','灰色','青色','品红色','黄色','浅灰色','darkgray' '
#000
值吗?
if(colorString.length() == 4) { colorString = "#" + StringUtils.repeat(colorString.substring(1, 1), 1) + StringUtils.repeat(colorString.substring(2, 2), 1) + StringUtils.repeat(colorString.substring(3, 3), 1) }
,如果我错了,请纠正我
if(colorString.length() == 4 && colorString[0] == '#')
这个问题是针对与十六进制颜色相关的大量搜索提出的,因此我将在此处添加摘要。
十六进制颜色采用RRGGBB
或的形式AARRGGBB
(alpha,红色,绿色,蓝色)。以我的经验,int
直接使用时,您需要使用完整AARRGGBB
表格。如果只有RRGGBB
表单,则只需FF
给它加上前缀以使Alpha(透明度)完全不透明。这是您在代码中进行设置的方式。0x
在开头使用表示它是十六进制而不是10。
int myColor = 0xFF3F51B5;
myView.setBackgroundColor(myColor);
正如其他人指出的那样,您可以Color.parseString
像这样使用
int myColor = Color.parseColor("#3F51B5");
myView.setBackgroundColor(myColor);
请注意,字符串必须以开头#
。这两个RRGGBB
和AARRGGBB
格式都支持。
实际上,您应该尽可能地从XML获取颜色。推荐使用此选项,因为这样可以更轻松地更改应用程序的颜色。如果您在整个代码中设置了很多十六进制颜色,那么以后尝试更改它们将是一个很大的痛苦。
Android材质设计具有已配置的十六进制值的颜色选项。
这些主题颜色在整个应用程序中都使用,如下所示:
colors.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="primary">#3F51B5</color>
<color name="primary_dark">#303F9F</color>
<color name="primary_light">#C5CAE9</color>
<color name="accent">#FF4081</color>
<color name="primary_text">#212121</color>
<color name="secondary_text">#757575</color>
<color name="icons">#FFFFFF</color>
<color name="divider">#BDBDBD</color>
</resources>
如果需要其他颜色,可以遵循的一个很好的做法是在xml中的两个步骤中定义颜色。首先命名十六进制值颜色,然后命名应用程序中应具有特定颜色的组件。这样一来,以后可以轻松调整颜色。同样,这是在colors.xml中。
<color name="orange">#fff3632b</color>
<color name="my_view_background_color">@color/orange</color>
然后,当您要在代码中设置颜色时,请执行以下操作:
int myColor = ContextCompat.getColor(context, R.color.my_view_background_color);
myView.setBackgroundColor(myColor);
Color类带有许多预定义的颜色常量。您可以像这样使用它。
int myColor = Color.BLUE;
myView.setBackgroundColor(myColor);
其他颜色是
Color.BLACK
Color.BLUE
Color.CYAN
Color.DKGRAY
Color.GRAY
Color.GREEN
Color.LTGRAY
Color.MAGENTA
Color.RED
Color.TRANSPARENT
Color.WHITE
Color.YELLOW
将该字符串转换为int
可以在setBackgroundColor
和中使用的颜色setTextColor
String string = "#FFFF0000";
int color = Integer.parseInt(string.replaceFirst("^#",""), 16);
16表示它是十六进制,而不是常规的0-9。结果应与
int color = 0xFFFF0000;
它的
int color = Color.parseColor("colorstring");
XML文件保存在res / values / colors.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="opaque_red">#f00</color>
<color name="translucent_red">#80ff0000</color>
</resources>
此应用程序代码检索颜色资源:
Resources res = getResources();
int color = res.getColor(R.color.opaque_red);
此布局XML将颜色应用于属性:
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="@color/translucent_red"
android:text="Hello"/>