我尝试以编程的方式设置背景颜色,但当我设置所有颜色时,背景变成了黑色,而不是与应用程序主题相同的白色背景。
View someView = findViewById(R.id.screen);
View root = someView.getRootView();
root.setBackgroundColor(color.white);
你能看见这段代码吗?
我尝试以编程的方式设置背景颜色,但当我设置所有颜色时,背景变成了黑色,而不是与应用程序主题相同的白色背景。
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"));
0xRRGGBBAA
,还是 0xAARRGGBB
,或者是 0xBBGGRRAA
,或者可能是 0xXXRRGGBB
?对于白色和黑色并不重要,但对于基本上任何其他颜色,了解这些信息是必要的。 - aroth0xAARRGGBB
。 - Lorne Laliberte以前的答案已经弃用,现在需要使用ContextCompat.getColor
来正确地检索颜色:
root.setBackgroundColor(ContextCompat.getColor(getActivity(), R.color.white));
Color.COLOR
(其中COLOR
是BLACK
、WHITE
、RED
等):myView.setBackgroundColor(Color.GREEN);
否则,你可以像其他人建议的那样处理。myView.setBackgroundColor(ContextCompat.getColor(getActivity(), R.color.myCustomGreen));
我不建议直接使用十六进制颜色代码。你应该将所有自定义颜色存放在colors.xml文件中。
这必须可行:
您必须使用 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);
}
root.setBackgroundColor(getResources().getColor(R.color.name));
name
表示你在 <color/>
标签中声明的名称。
color.white
是指白色。 - weston