2011-03-09 116 views
207

我想使用六进制字符串中的颜色(如"#FFFF0000")来(例如)更改布局的背景颜色。 Color.HSVToColor看起来像赢家,但它需要float[]作为参数。如何从十六进制颜色中获取颜色字符串

我靠近解决方案吗?

+0

[在运行时转换的Android颜色字符串转换成int]的可能的复制(http://stackoverflow.com/questions/3849607/converting-android -color-string-in-runtime-into-int) – 2016-02-25 05:50:34

回答

454

尝试Color类方法:

public static int parseColor (String colorString) 

从Android文档:

支持的格式有:#RRGGBB #AARRGGBB '红', '蓝', '绿', '黑', “白色”,“灰色”,“青色”,“品红”,“黄”,“浅灰色”,“深灰”

+4

任何人都知道如何解析'#000'值? – 2015-01-09 10:14:46

+4

是的,只需要:'''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)}''',请纠正我,如果我错了 – xdevs23 2015-12-12 11:46:19

+3

要添加到@ xdevs23代码,将if条件更改为此:'if(colorString.length()== 4 && colorString [0] =='#')' – Zac 2016-01-11 19:40:47

20

该字符串转换为int颜色可以在0123可以使用和setTextColor

String string = "#FFFF0000"; 
int color = Integer.parseInt(string.replaceFirst("^#",""), 16); 

16意味着它是十六进制的,而不是你的正常0-9。结果应该与

int color = 0xFFFF0000; 
+0

如何转换String color =“80000000”;以int color =? – 2014-05-24 01:01:08

+0

我认为字符串版本aught是'#80000000',在这种情况下int版本是'int color = 0x80000000;'。如果这不起作用,那么发布[新问题](http://stackoverflow.com/questions/ask)以获得更多详细信息,这样比我更多的人会注意到它。请记住'#80000000'是一种半透明的黑色。 – 2014-05-24 13:01:51

+0

我知道int将int color = 0x80000000,但我的问题是如何转换它...但现在我会解决我的问题自我与int color = parseColor(“#”+“80000000”); ...感谢回复。 – 2014-05-24 13:12:03

4

尝试使用0xFFF000,而不是将其传递给Color.HSVToColor方法。

+2

我认为你应该用零代替第三个F。在OP中,我认为前两个F字符用于设置不透明度。 – 2011-03-09 16:14:54

9

我使用这个,它对我设置任何颜色我很好。

public static final int MY_COLOR = Color.rgb(255, 102, 153); 

设置使用0-255的颜色各红色,绿色和蓝色,然后任何你想要的颜色使用的只是把my_color的,而不是Color.BLUE或Color.RED或任何其他静态颜色Color类的提供。

只要做一个谷歌搜索彩色图表,它可以找到一个图表,使用0-255正确的RGB代码。

175

尝试:在保存RES /价值/颜色

myLayout.setBackgroundColor(Color.parseColor("#636161")); 
+2

如果您使用xamarin ..代码是这个Android.Graphics.Color.ParseColor(“#636161”)与“P”的上限 – 2017-02-12 23:52:41

5

XML文件。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"/> 
3

如果您在XML定义颜色和想用它来改变背景颜色或者这个API是你正在寻找的那个:

((TextView) view).setBackgroundResource(R.drawable.your_color_here); 

在我的示例我用了TestView

9

试试这个:

vi.setBackgroundColor(Color.parseColor("#FFFF0000")); 
13

这是

int color = Color.parseColor("colorstring"); 
12

这个问题出现了许多相关的十六进制颜色,所以我会搜索在这里添加一个总结。

从int

六角颜色颜色采取的形式RRGGBBAARRGGBB(α,红,绿,蓝)。根据我的经验,当直接使用int时,您需要使用完整的AARRGGBB表单。如果您只有RRGGBB表格,那么只需将其前缀FF以使Alpha(透明度)完全不透明。这里是你如何在代码中设置它。在开始使用0x意味着它是十六进制,而不是基地10

int myColor = 0xFF3F51B5; 
myView.setBackgroundColor(myColor); 

颜色从字符串

正如其他人所指出的那样,你可以使用Color.parseString像这样

int myColor = Color.parseColor("#3F51B5"); 
myView.setBackgroundColor(myColor); 

注意字符串必须以#开头。支持RRGGBBAARRGGBB格式。

来自XML的颜色

您应该尽可能从XML获取颜色。这是推荐的选项,因为它使得更容易对应用程序进行颜色更改。如果你在你的代码中设置了很多十六进制颜色,那么稍后尝试改变它们是一件很痛苦的事情。

Android材料设计具有已配置的十六进制值的颜色调色板。

这些主题颜色在整个你的应用程序中使用,并期待这样的:

颜色。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); 

Android的预定义的颜色

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

注释
0

在Xamarin 使用此

Control.SetBackgroundColor(global::Android.Graphics.Color.ParseColor("#F5F1F1")); 
相关问题