具有高度的自定义操作栏如何将背景设置为全屏

custom actionbar with height how to set background to full screen

当我在主题中具有 120dp 高度的自定义操作栏时,你知道如何设置全屏背景颜色(我在应用程序启动时需要它)。 我的操作栏样式:

  <style name="MyActionBar"
     parent="@android:style/Widget.Holo.Light.ActionBar.Solid.Inverse">
   <item name="android:height">120dp</item>
   <item name="android:displayOptions"></item>
   <item name="android:background">#00000000</item>
  </style>

我想设置类似全屏彩色背景的东西 "behind" 这个操作栏。这种风格有透明的背景,所以如果我可以设置一些颜色,它会看起来像我想要的,但我不知道如何...

在setContentView前加上这两行

requestWindowFeature(Window.FEATURE_NO_TITLE); 
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.main);

如果我理解正确,那么我相信你指的是 activity 的主要背景颜色,正如你所说 'behind' 操作栏。

在您的 activity 的 XML 中,您应该会看到类似于以下内容的内容:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="16dp"
    android:paddingRight="16dp" >

如果你附加 android:backgroundColor="#000" 那么你应该得到你正在寻找的结果(当然请用你选择的颜色替换 #000)。


<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="16dp"
    android:paddingRight="16dp"
    android:backgroundColor="#000" >

您可以像这样设置布局的背景颜色:

 getWindow().getDecorView().setBackgroundColor(getResources().getColor(R.color.background_color,null));

您应该在 color.xml 中定义 background_color:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="background_color">#000000</color>
</resources>

感谢大家的解答,但我认为我没有很好地解释我的问题。

所以看看这张图片

当应用程序加载时,我可以在我的主题样式中设置背景颜色,这种颜色仅用于操作栏中的位置(120dp,如样式),但我想在应用程序加载时全屏显示颜色或图像背景。

而且我不知道在加载应用程序时如何设置这个白色背景。

当我在样式主题中将操作栏背景设置为透明时,颜色与屏幕其余部分的颜色相同,这就是为什么我认为当我更改此白色 "behind" 并设置操作栏时背景透明,它将按我的意愿工作。

我希望现在我能清楚地解释我想做什么。我想在加载应用程序时将背景设置为整个屏幕。

我找到了解决问题的方法。我必须创建启动画面才能得到我想要的。 如果有人有类似的问题,那么应该创建启动画面。 为此,您必须:

  1. 正在为初始屏幕创建可绘制资源。
  2. 正在定义将显示可绘制资源的新主题。
  3. 正在向应用程序添加一个新的 Activity,它将用作上一步中创建的主题所定义的初始屏幕。

这里有一个简单的例子:https://www.bignerdranch.com/blog/splash-screens-the-right-way/