如何以编程方式将活动的背景颜色设置为白色?
答案 0 :(得分:242)
在setContentView()
调用
getWindow().getDecorView().setBackgroundColor(Color.WHITE);
答案 1 :(得分:131)
获取所使用的根布局的句柄,然后在其上设置背景颜色。根布局是你用set。的调用setContentView。
setContentView(R.layout.main);
// Now get a handle to any View contained
// within the main layout you are using
View someView = findViewById(R.id.randomViewInMainLayout);
// Find the root view
View root = someView.getRootView();
// Set the color
root.setBackgroundColor(getResources().getColor(android.R.color.red));
答案 2 :(得分:77)
我更喜欢按主题着色
<style name="CustomTheme" parent="android:Theme.Light">
<item name="android:windowBackground">@color/custom_theme_color</item>
<item name="android:colorBackground">@color/custom_theme_color</item>
</style>
答案 3 :(得分:58)
?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#FFFFFF"
android:id="@+id/myScreen"
</LinearLayout>
换句话说,“android:background”是您要更改的XML中的标记。
如果您需要动态更新背景值,请参阅以下内容:
答案 4 :(得分:7)
您可以使用它来调用预定义的Android颜色:
element.setBackgroundColor(android.R.color.red);
如果您想使用自己的一种自定义颜色,可以将自定义颜色添加到strings.xml,然后使用以下内容来调用它。
element.setBackgroundColor(R.color.mycolour);
但是,如果要在layout.xml中设置颜色,可以修改并将下面的内容添加到接受它的任何元素。
android:background="#FFFFFF"
答案 5 :(得分:7)
在onCreate()
方法中:
getWindow().getDecorView().setBackgroundColor(getResources().getColor(R.color.main_activity_background_color));
您还需要向values文件夹添加一个名为color.xml
的新XML文件,并为其指定一个新的颜色属性:
color.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="main_activity_background_color">#000000</color>
</resources>
请注意,您可以将color.xml
命名为您想要的名称,但您可以通过代码R.color.yourId
来引用它。
修改强>
由于不推荐使用getResources().getColor()
,请改用getWindow().getDecorView().setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.main_activity_background_color));
。
答案 6 :(得分:3)
要获取xml文件中定义的根视图,不使用操作栏,可以使用:
View root = ((ViewGroup) findViewById(android.R.id.content)).getChildAt(0);
所以,要将颜色改为白色:
root.setBackgroundResource(Color.WHITE);
答案 7 :(得分:3)
View randview = new View(getBaseContext());
randview = (View)findViewById(R.id.container);
randview.setBackgroundColor(Color.BLUE);
为我工作。谢谢。
答案 8 :(得分:1)
final View rootView = findViewById(android.R.id.content);
rootView.setBackgroundResource(...);
答案 9 :(得分:1)
Button btn;
View root;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn = (Button)findViewById(R.id.button);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
root =findViewById(R.id.activity_main).getRootView();
root.setBackgroundColor(Color.parseColor("#FFFFFF"));
}
});
}
答案 10 :(得分:0)
我遇到了类似的问题,我按照上面给出的答案中提到的步骤进行了操作。我会分享对我有用的东西。
我使用的是RecyclerView,并为该项目设置了背景颜色。但是,当项目数量不适合屏幕时,看起来很奇怪
然后我使用了函数
public void setActivityBackgroundColor(int color) {
View view = this.getWindow().getDecorView();
view.setBackgroundColor(color);
}
在我的代码中调用另一个函数中的函数setActivityBackgroundColor(R.color.colorAccent);
。
这导致了this layout。很奇怪。
我最后按照KitKat建议的内容修复了它。
public void setActivityBackgroundColor(int color) {
View view = this.getWindow().getDecorView();
view.setBackgroundResource(color);
}
最后fixed it。
编辑:如果未填充RecyclerView,解决方案开始抛出错误。在这种情况下,我设置一个标志来检查视图是否为空。
public void setActivityBackgroundColor(int color) {
View view = this.getWindow().getDecorView();
if (dataIsNull) {
view.setBackgroundColor(color);
}
else {
view.setBackgroundResource(color);
}
}
它现在就像一个魅力。
答案 11 :(得分:0)
使用此:
myActivity.setBackgroundColor(ContextCompat.getColor(this, R.color.colorWhite));
答案 12 :(得分:0)
活动
findViewById(android.R.id.content).setBackgroundColor(color)
答案 13 :(得分:0)
现在最好的方法当然是
getWindow().getDecorView().setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.main_activity_background_color));
但是请注意,如果在Designer中将任何内容设置为背景色,它将覆盖您尝试在代码中设置的任何内容。