以编程方式设置背景颜色

我尝试以编程方式设置背景颜色,但是当我设置每一种颜色时,背景都是黑色的,但任何颜色背景都是白色的,就像应用程序主题一样。

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 (其中COLORBLACKWHITERED等):

 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); }