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

SJS*_*SJS 123 java android colors android-activity

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

Aru*_*mar 248

setContentView()通话后,在您的活动中添加此单行

getWindow().getDecorView().setBackgroundColor(Color.WHITE);
Run Code Online (Sandbox Code Playgroud)

  • 这个答案实际上比接受的答案更正确. (38认同)
  • 同意.这会在应用根布局之前更改窗口的颜色,接受的答案会更改活动布局中根元素的颜色 (4认同)
  • 如果您只想设置活动的背景颜色,我认为这应该是正确的。 (2认同)

Ham*_*amy 137

获取所使用的根布局的句柄,然后在其上设置背景颜色.根布局是你用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));
Run Code Online (Sandbox Code Playgroud)

  • 将最后一行更改为`root.setBackgroundColor(getResources().getColor(android.R.color.red));` (24认同)

Dav*_*vid 80

我更喜欢按主题着色

<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>
Run Code Online (Sandbox Code Playgroud)

  • windowBackground和colorBackground有什么区别? (21认同)
  • @ AlikElzin-kilaka:不同的是,当应用程序启动时,首先可以看到`android:windowBackground`,片刻,然后布局背景颜色接管.因此,如果您使用两种不同的颜色,它将在屏幕上闪烁. (6认同)
  • `windowBackground` 仅影响窗口背景,但 `colorBackground` 也会影响所有视图。/sf/ask/1838635501/ (3认同)

I82*_*uch 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>
Run Code Online (Sandbox Code Playgroud)

换句话说,"android:background"是您要更改的XML中的标记.

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

练习:通过SeekBar更改背景颜色


Luk*_*ton 8

你可以用它来调用预定义的android颜色:

element.setBackgroundColor(android.R.color.red);
Run Code Online (Sandbox Code Playgroud)

如果要使用自己的一种自定义颜色,可以将自定义颜色添加到strings.xml,然后使用下面的内容来调用它.

element.setBackgroundColor(R.color.mycolour);
Run Code Online (Sandbox Code Playgroud)

但是,如果要在layout.xml中设置颜色,可以修改并将以下内容添加到接受它的任何元素.

android:background="#FFFFFF"
Run Code Online (Sandbox Code Playgroud)


God*_*God 7

在你的onCreate()方法中:

getWindow().getDecorView().setBackgroundColor(getResources().getColor(R.color.main_activity_background_color));
Run Code Online (Sandbox Code Playgroud)

您还需要向values文件夹添加一个名为的新XML文件,color.xml并为其指定一个新的颜色属性:

color.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="main_activity_background_color">#000000</color>
</resources>
Run Code Online (Sandbox Code Playgroud)

请注意,您可以命名所需的color.xml任何名称,但您可以通过代码将其命名为R.color.yourId.

编辑

因为getResources().getColor()已弃用,请getWindow().getDecorView().setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.main_activity_background_color)); 改用.