【问题标题】:Set initial background color before loading加载前设置初始背景颜色
【发布时间】:2015-07-25 15:37:48
【问题描述】:

如何在setContentView 之前设置活动的背景颜色。 我有一个需要很长时间才能加载的活动,我需要保持背景为白色,直到活动完成加载。

【问题讨论】:

  • 尝试在该活动中添加微调器并使背景透明
  • rootView背景设为白色直到加载完毕,然后在加载完成后设为不同颜色
  • @MD 我试过这个getWindow().getDecorView().findViewById(android.R.id.content).setBackgroundColor(0xffffffff); 但它不起作用。
  • @AVEbrahimi 这个ID是什么android.R.id.content

标签: android android-activity


【解决方案1】:

我想这正是你所需要的。

首先在 values/colors.xml 中定义颜色

<resources>
    <color name="background">#FFFFFF </color>
</resources>

在引用该颜色的 res/values 中创建一个主题.xml 文件:

<resources>
 <style name="MyTheme" parent="@android:style/Theme.Light"> 
  <item name="android:windowBackground">@color/background</item>
 </style>
</resources>

...然后在您的 AndroidManifest.xml 中将其指定为您要使用的活动的主题。

<activity
        android:name=".MyActivity"
        android:theme="@style/MyTheme" />

【讨论】:

  • 是的,再读一遍。据我了解,OP 希望在正确加载之前立即将活动背景保持为白色。这将满足他的要求。 @MD
  • OP 说了什么? I need to keep background white until activity finishes loading.
  • 那么,使用这个有什么问题呢?你不认为,它会帮助 OP 保持背景白色,直到活动完成加载? @MD
  • @我不这么认为。对 OP 有帮助。
  • 即使我使用了相同的,当我需要与 OP 需要相同的时候。
【解决方案2】:

您可以执行以下操作之一:

setContentView在activity生命周期中可以被多次调用,所以你可以简单地设置另一个布局文件,根据需要显示背景,一旦你完成加载,再次调用setContentView加载实际的布局!

您可以在一个布局文件中简单地管理所有这些,方法是为根视图提供白色背景色,而不是根据需要显示/隐藏所需部分!

【讨论】:

  • @MD 谢谢,我还添加了您的建议作为另一种选择。
【解决方案3】:

在您的 oncreate 中添加以下内容

Spinner = (ProgressBar) findViewById(R.id.LoginPageProgressBar);
    Spinner.setVisibility(View.GONE);

当您单击按钮时,在使用意图之前添加以下内容

Spinner.setVisibility(View.VISIBLE);

【讨论】:

    【解决方案4】:

    来自文档

    setContentView(int layoutResID)

    从布局资源中设置活动内容。该资源将是 膨胀,将所有顶级视图添加到活动中。

    所以,在setContentView()之前不能给一些背景色

    但是尝试

    • 避免onCreate()Activity 中的代码过多。

    • 使用AsyncTask 加载数据并向用户显示progressbar

    • 或者你可以在加载主Activity之前实现一些splash screen

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-22
      • 1970-01-01
      • 2023-03-25
      • 1970-01-01
      • 1970-01-01
      • 2010-09-17
      • 2018-07-15
      • 2014-09-04
      相关资源
      最近更新 更多