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

Posted

技术标签:

【中文标题】如何以编程方式将 Activity 的背景颜色设置为白色?【英文标题】:How to set background color of an Activity to white programmatically? 【发布时间】:2011-06-13 07:10:06 【问题描述】:

【问题讨论】:

【参考方案1】:

在您的活动中添加这一行,在setContentView() 调用之后

getWindow().getDecorView().setBackgroundColor(Color.WHITE);

【讨论】:

同意。这会在应用根布局之前更改窗口的颜色,接受的答案会更改活动布局中根元素的颜色 我觉得这个应该是正确的,如果你只是想设置activity的背景色。 我的 +1 因为它改变了根窗口的颜色 这绝对是最好的答案 这应该是正确的答案。接受的答案会导致透支。【参考方案2】:

获取使用的根布局的句柄,然后为其设置背景颜色。根布局就是你调用 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));

【讨论】:

当我这样做时,Eclipse 将其标记为“应在此处传递已解析的颜色而不是资源 ID:getResources().getColor(android.R.color.red)”。 把最后一行改成root.setBackgroundColor(getResources().getColor(android.R.color.red)); 这个答案有效;但根据提问者的说法,它仍然不是完全程序化的。我会在下面建议 Arunkumar 的答案。 我不认为这个答案是正确的。这不是为活动设置颜色,这将导致过度绘制。正确答案在下面,应该像window.decorView.setBackgroundColor(getResolvedColor(R.color.your_color))【参考方案3】:

我更喜欢按主题着色

<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>

【讨论】:

windowBackground 和 colorBackground 有什么区别? 只要设置windowBackground就可以了。颜色背景有什么用? @AlikElzin-kilaka:不同之处在于,当应用程序启动时,android:windowBackground 首先是可见的,有一小会儿,然后是布局背景颜色。所以如果你使用两种不同的颜色,它会在屏幕上闪烁。 windowBackground 仅影响窗口背景,但colorBackground 也影响所有视图。 ***.com/questions/26266221/…【参考方案4】:
?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_
android:layout_
android:background="#FFFFFF"
android:id="@+id/myScreen"
</LinearLayout>

换句话说,“android:background”是您要更改的 XML 中的标记。

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

Exercise: Change background color, by SeekBar

【讨论】:

嗯,好点。不管怎样,我给出的链接很容易回答了这个问题。 我不认为你给了我正确的颜色值!!我得到它会用#FFFFFF 对于我们这些想要在 xml 中执行并通过谷歌搜索到达这里的人来说,这是一个很好的答案。【参考方案5】:

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

element.setBackgroundColor(android.R.color.red);

如果您想使用自己的自定义颜色之一,可以将自定义颜色添加到 strings.xml,然后使用下面的代码调用它。

element.setBackgroundColor(R.color.mycolour);

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

android:background="#FFFFFF"

【讨论】:

如果我使用第一种技术,我会收到一条警告,说它实际上应该像这样访问:getResources().getColor(android.R.color.black);【参考方案6】:

在您的onCreate() 方法中:

getWindow().getDecorView().setBackgroundColor(getResources().getColor(R.color.main_activity_background_color));

您还需要在 values 文件夹中添加一个名为 color.xml 的新 XML 文件并在那里分配一个新的颜色属性:

颜色.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));

【讨论】:

【参考方案7】:

要获得在你的 xml 文件中定义的根视图,没有操作栏,你可以使用这个:

View root = ((ViewGroup) findViewById(android.R.id.content)).getChildAt(0);

所以,将颜色变为白色:

root.setBackgroundResource(Color.WHITE);

【讨论】:

【参考方案8】:
View randview = new View(getBaseContext());
randview = (View)findViewById(R.id.container);
randview.setBackgroundColor(Color.BLUE);

为我工作。谢谢。

【讨论】:

这个答案在低质量帖子审查队列中,因为它只是没有解释的代码。请通过解释您的代码的作用以及它如何回答问题来改进您的答案。请阅读this advice on answering programming questions helpfully。 有点好笑,这清楚地将背景设置为蓝色而不是要求的白色。【参考方案9】:
final View rootView = findViewById(android.R.id.content);
rootView.setBackgroundResource(...);

【讨论】:

【参考方案10】:
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"));
        
    );

【讨论】:

【参考方案11】:

活动

findViewById(android.R.id.content).setBackgroundColor(color)

【讨论】:

【参考方案12】:

目前最好的方法当然是

getWindow().getDecorView().setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.main_activity_background_color));

但请注意,如果您在 Designer 中将任何内容设置为背景颜色,它将覆盖您尝试在代码中设置的任何内容

【讨论】:

以上是关于如何以编程方式将 Activity 的背景颜色设置为白色?的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式圆角并设置随机背景颜色

以编程方式“闪烁” UITableViewCell 将背景颜色设置为白色

如何以编程方式在自定义标题栏上设置背景颜色渐变?

如何以编程方式更改背景颜色而不影响边框?

Android:以编程方式将颜色设置为 ProgressBar

如何以编程方式将背景颜色从 android.support.design 更改为 MaterialButton