我正在尝试将十六进制值转换为int,因此我可以创建一个新的颜色drawable。我不确定这是否可行,但根据documentation,它应该。它显然要求
public ColorDrawable(int color)
在API级别1中添加创建具有指定的新ColorDrawable 颜色。
参数 颜色要绘制的颜色。
所以,我的代码无效,因为我收到了一个Invalid int:“FF6666”错误。有什么想法吗?
int decode = Integer.decode("FF6666");
ColorDrawable colorDrawable = new ColorDrawable(decode);
答案 0 :(得分:134)
由于你在谈论十六进制,你必须从0x
开始,不要忘记不透明度。
所以基本上: 0xFFFF6666
ColorDrawable cd = new ColorDrawable(0xFFFF6666);
您还可以在/ res中创建一个新的colors.xml文件,并定义颜色如下:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="mycolor">#FF6666</color>
</resources>
并简单地获取R.color.mycolor
中定义的颜色getResources().getColor(R.color.mycolor)
答案 1 :(得分:13)
要与ContextCompat一起使用并重新使用颜色,您可以执行以下操作:
ColorDrawable colorDrawable = new ColorDrawable(ContextCompat.getColor(this, R.color.white));
答案 2 :(得分:10)
应该是这样的......
ColorDrawable cd = new ColorDrawable(0xffff6666);
注意我使用了8个十六进制数字,而不是6个十六进制数字。其中add to transparency
答案 3 :(得分:4)
我认为你必须使用:
public static int parseColor(String colorString)
在API级别1中添加解析颜色字符串,并返回 对应的color-int。如果无法解析字符串,则抛出一个 IllegalArgumentException异常。支持的格式为:#RRGGBB #AARRGGBB红色,蓝色,绿色,黑色,白色,灰色,青色,品红色,黄色,浅灰色,深灰色,灰色,浅灰色,深灰色,浅绿色,紫红色,石灰色, 栗色,海军蓝,橄榄色,紫色,银色,青色
答案 4 :(得分:4)
按照上述建议,成为这个问题的摘要:
ColorDrawable colorDrawable = new ColorDrawable( Color.parseColor (“#ce9b2c”));`
ColorDrawable colorDrawable = new ColorDrawable( 0xFFCE9B2C ); 注意有8个十六进制数字,而不是6个十六进制数字,这没有用。案例全部
ColorDrawable colorDrawable = new ColorDrawable(ContextCompat.getColor(mContext,R.color.default_color));
选择你!
答案 5 :(得分:0)
这是我将十六进制颜色转换为int并应用于背景的方式 视图的
假设我们的颜色为#8080000。
int myColor = Color.parseColor("#808000");
view.setBackgroundColor(context.getColor(myColor));