我想使用一个类似于 "#FFFF0000"
的十六进制字符串中的颜色来改变布局的背景颜色。
Color.HSVToColor
看起来是一个不错的选择,但它需要一个 float[]
参数。
我离解决方案还有多远?
尝试使用Color
类方法:
public static int parseColor (String colorString)
来自Android文档:
支持的格式有:#RRGGBB #AARRGGBB 'red'、'blue'、'green'、'black'、'white'、'gray'、'cyan'、'magenta'、'yellow'、'lightgray'、'darkgray'
AndroidX:String.toColorInt()
#000
值吗? - Alex Semeniukif(colorString.length() == 4) { colorString = "#" + StringUtils.repeat(colorString.substring(1, 2), 2) + StringUtils.repeat(colorString.substring(2, 3), 2) + StringUtils.repeat(colorString.substring(3, 4), 2) }
,如果我有错误,请纠正我。 - xdevs23if(colorString.length() == 4 && colorString[0] == '#')
。请注意,翻译过程中不会添加解释或其他额外内容。 - Zac尝试:
myLayout.setBackgroundColor(Color.parseColor("#636161"));
这个问题与十六进制颜色相关,因此我将在这里添加一个摘要。
十六进制颜色采用RRGGBB
或AARRGGBB
(透明度、红、绿、蓝)的形式。根据我的经验,当直接使用int
时,需要使用完整的AARRGGBB
格式。如果您只有RRGGBB
格式,则只需在前面加上FF
,以使 alpha (透明度) 完全不透明。以下是如何在代码中设置它。在开头使用0x
表示它是十六进制而不是十进制。
int myColor = 0xFF3F51B5;
myView.setBackgroundColor(myColor);
正如其他人所指出的那样,您可以像这样使用Color.parseColor
:
int myColor = Color.parseColor("#3F51B5");
myView.setBackgroundColor(myColor);
注意字符串必须以 #
开头,支持 RRGGBB
和 AARRGGBB
格式。
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
黄色将该字符串转换为可用于setBackgroundColor
和setTextColor
的int
颜色值。
String string = "#FFFF0000";
int color = Integer.parseInt(string.replaceFirst("^#",""), 16);
16表示它是十六进制而不是普通的0-9。结果应该与
相同。int color = 0xFFFF0000;
#80000000
,这种情况下整数版本将是int color = 0x80000000;
。如果这不起作用,请发布一个新问题,提供更多细节,以便比我更多的人会注意到它。请记住,#80000000
是半透明黑色。 - 700 Software这是
int color = Color.parseColor("colorstring");
试试这个:
vi.setBackgroundColor(Color.parseColor("#FFFF0000"));
我使用这个方法,它对于设置任何我想要的颜色非常有效。
public static final int MY_COLOR = Color.rgb(255, 102, 153);
使用 0-255 来设置红色、绿色和蓝色的颜色,然后在任何需要使用该颜色的地方,只需将 MY_COLOR 放在 Color.BLUE 或 Color.RED 等其他静态颜色的位置即可。
只需进行 Google 搜索即可找到带有正确 RGB 代码的颜色图表,使用 0-255。
试试这个
int colorInt = Color.parseColor("#FF00FFF0");
bg.setBackgroundColor(colorInt);
bg是一个视图或布局,您希望设置其背景颜色。
Control.SetBackgroundColor(global::Android.Graphics.Color.ParseColor("#F5F1F1"));