我想使用一个颜色从一个六边形字符串,如“#FFFF0000”来(说)改变一个布局的背景颜色。 颜色。HSVToColor看起来像一个赢家,但它以float[]作为参数。
我离解决方案还有一步之遥吗?
我想使用一个颜色从一个六边形字符串,如“#FFFF0000”来(说)改变一个布局的背景颜色。 颜色。HSVToColor看起来像一个赢家,但它以float[]作为参数。
我离解决方案还有一步之遥吗?
当前回答
这个问题会出现在一些与十六进制颜色相关的搜索中,所以我将在这里添加一个摘要。
int的颜色
十六进制颜色的形式为RRGGBB或AARRGGBB(阿尔法、红、绿、蓝)。根据我的经验,直接使用int型时,需要使用完整的AARRGGBB表单。如果你只有RRGGBB形式,那么就用FF作为前缀,使alpha(透明度)完全不透明。下面是如何在代码中设置它。在开头使用0x意味着它是十六进制,而不是以10为基数。
int myColor = 0xFF3F51B5;
myView.setBackgroundColor(myColor);
字符串颜色
正如其他人所注意到的,您可以使用颜色。parseColor像这样
int myColor = Color.parseColor("#3F51B5");
myView.setBackgroundColor(myColor);
注意,字符串必须以#开头。支持RRGGBB和AARRGGBB两种格式。
来自XML的颜色
您应该尽可能地从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);
Android预定义颜色
Color类带有许多预定义的颜色常量。你可以这样用。
int myColor = Color.BLUE;
myView.setBackgroundColor(myColor);
其他颜色是
颜色。黑色的 颜色。蓝色的 颜色。青色 颜色。DKGRAY 颜色。灰色的 颜色。绿色 颜色。LTGRAY 颜色。品红色的 颜色。红色的 颜色。透明的 颜色。白色 颜色。黄色的
笔记
一个快速找到十六进制颜色的方法是在Gimp(或其他一些照片编辑软件)中打开颜色选择对话框。 材料设计中的标准不透明度级别
其他回答
Try:
myLayout.setBackgroundColor(Color.parseColor("#636161"));
我用这个,它很适合我设置任何我想要的颜色。
public static final int MY_COLOR = Color.rgb(255, 102, 153);
为每个红色,绿色和蓝色设置颜色0-255,然后在任何你想要使用的颜色的地方放置MY_COLOR而不是color。蓝色或彩色。红色或Color类提供的任何其他静态颜色。
只要做一个谷歌搜索颜色图表,你就可以找到一个使用0-255的正确RGB代码的图表。
没有预定义的类实现直接从十六进制代码的颜色名称,所以你要做的是尝试键值对概念简单,遵循这段代码。
String hexCode = "Any Hex code" //#0000FF HashMap<String, String> color_namme = new HashMap<String, String>(); color_namme.put("#000000", "Black"); color_namme.put("#000080", "Navy Blue"); color_namme.put("#0000C8", "Dark Blue"); color_namme.put("0000FF", "Blue"); color_namme.put("000741", "Stratos"); color_namme.put("001B1C", "Swamp"); color_namme.put("002387", "Resolution Blue"); color_namme.put("002900", "Deep Fir"); color_namme.put("002E20", "Burnham"); for (Map.Entry<String, String> entry : color_namme.entrySet()) { String key = (String) entry.getKey(); String thing = (String) entry.getValue(); if (hexCode.equals(key)) Color_namme.setText(thing); //Here i display using textview }
试试这个:
vi.setBackgroundColor(Color.parseColor("#FFFF0000"));
如果你在XML中定义了一个颜色,并想用它来改变背景颜色或其他东西,这个API就是你正在寻找的:
((TextView) view).setBackgroundResource(R.drawable.your_color_here);
在我的示例中,我将它用于TestView