以编程方式设置背景颜色
我尝试以编程方式设置背景颜色,但是当我设置每一种颜色时,背景都是黑色的,但任何颜色背景都是白色的,就像应用程序主题一样。
View someView = findViewById(R.id.screen); View root = someView.getRootView(); root.setBackgroundColor(color.white);
你能看到代码吗?
我不明白你的问题…当我设定每一种颜色时,你是什么意思? 试试这个(编辑:“#fffff”原来的答案改成了“#ffffff”
yourView.setBackgroundColor(Color.parseColor("#ffffff"));
你需要使用getResources()方法,尝试使用下面的代码
View someView = findViewById(R.id.screen); View root = someView.getRootView(); root.setBackgroundColor(getResources().getColor(color.white));
编辑::
getResources.getColor()已被弃用,所以请使用如下
root.setBackgroundColor(ContextCompat.getColor(this, R.color.white));
您可以使用
root.setBackgroundColor(0xFFFFFFFF);
要么
root.setBackgroundColor(Color.parseColor("#ffffff"));
以前的答案现在已被弃用,你需要使用ContextCompat.getColor
来正确地检索颜色:
root.setBackgroundColor(ContextCompat.getColor(getActivity(), R.color.white));
如果您只想使用某些预定义的Android颜色,则可以使用Color.COLOR
(其中COLOR
为BLACK
, WHITE
, RED
等):
myView.setBackgroundColor(Color.GREEN);
否则,你可以像其他人一样build议
myView.setBackgroundColor(ContextCompat.getColor(getActivity(), R.color.myCustomGreen));
我不build议直接使用hex颜色。 您应该将所有的自定义颜色保存在colors.xml中 。
如果您将颜色代码保存在值文件夹下的colors.xml中,则应该调用以下内容:
root.setBackgroundColor(getResources().getColor(R.color.name));
name
意味着你在<color/>
标签中声明。
这必须工作:您必须使用getResources()。getColor(R.color.WHITE)来获取颜色资源,您必须将其添加到colors.xml资源文件
View someView = findViewById(R.id.screen); someView.setBackgroundColor(getResources().getColor(R.color.WHITE));
在我的情况下,它并没有改变颜色,因为我在我的xml资源中设置颜色 。
删除设置颜色的行后,完美的编程
这是我在RecyclerView中做的一个例子
final Drawable drawable = ContextCompat.getDrawable(mContext, R.drawable.ic_icon).mutate(); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { holder.image.setBackground(drawable); } else { holder.image.setBackgroundDrawable(drawable); }