如何以编程方式将活动的背景颜色设置为白色?

时间:2011-01-21 17:13:17

标签: java android android-activity colors

如何以编程方式将活动的背景颜色设置为白色?

14 个答案:

答案 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中的标记。

如果您需要动态更新背景值,请参阅以下内容:

Exercise: Change background color, by SeekBar

答案 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,并为该项目设置了背景颜色。但是,当项目数量不适合屏幕时,看起来很奇怪

My initial layout

然后我使用了函数

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中将任何内容设置为背景色,它将覆盖您尝试在代码中设置的任何内容