以编程方式设置背景色

我试图设置的背景颜色编程,但当我设置每一个我的颜色,背景是黑色,但任何颜色背景是白色的应用程序主题。

View someView = findViewById(R.id.screen);
View root = someView.getRootView();
root.setBackgroundColor(color.white);

你能看到密码吗?

325631 次浏览

你可以用

 root.setBackgroundColor(0xFFFFFFFF);

或者

 root.setBackgroundColor(Color.parseColor("#ffffff"));

我不明白你的问题... 你说“当我设置每一种颜色时”是什么意思?试试这个(编辑: “ # 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));

以前的答案现在已经过时了,你需要使用 ContextCompat.getColor来正确检索颜色:

root.setBackgroundColor(ContextCompat.getColor(getActivity(), R.color.white));

如果您将颜色代码保存在 value 文件夹下的 Colors.xml 中,那么您应该调用以下内容:

root.setBackgroundColor(getResources().getColor(R.color.name));

name表示在 <color/>标记中声明。

在我的情况下,它没有改变颜色,因为我是 在 xml 资源中设置颜色

在删除设置颜色的行之后,它以编程方式完美地工作了

这是我在回收视图中做的一个例子

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

这必须奏效:

必须使用 GetResources () . getColor (R.color. WHITE)获取颜色资源,必须将其添加到 Xml资源文件中

View someView = findViewById(R.id.screen);


someView.setBackgroundColor(getResources().getColor(R.color.WHITE));

如果你只是想使用一些预定义的 Android 颜色,你可以使用 Color.COLOR(其中 COLORBLACKWHITERED,等等) :

myView.setBackgroundColor(Color.GREEN);

否则你可以按照别人的建议去做

myView.setBackgroundColor(ContextCompat.getColor(getActivity(), R.color.myCustomGreen));

我不推荐直接使用十六进制颜色。您应该将所有自定义颜色保存在 Xml中。