状态栏颜色不显示 – 5.0棒棒糖Android Studio:(AppCompat-v7:r21)

我在Android Studio中使用Android 5.0 Lollipop的AppCompat-v7:21.0.0支持库。 我的问题是,可以通过在values/styles.xml文件中设置colorPrimaryDark来更改状态栏颜色,在xml布局预览和模拟器中都显示为黑色。

那么怎么了? 我错过了什么吗? 请告诉我。 谢谢。

编辑: 我意识到更改状态栏上的前棒棒糖版本的颜色是不可能的事实。 我的XML布局编辑器预览和我的模拟器都设置为API级别21(5.0棒棒糖)。 但是,状态栏仍然不是我在colorPrimaryDark设置的颜色。 我尝试在styles.xml执行statusBarColor ,但无济于事。 它仍然是黑色的。

另外: 我看到类似问题的答案之一,他们build议我把我的minSdkVersion到21.我试过了,但没有奏效。 我希望我的应用能够在API Level 15及以上版本的设备上运行。

请阅读:为使此生效,窗口必须在绘制系统栏背景

 android.view.WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS 

 android.view.WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS 

不得设置( 来源 )

如果你不知道如何添加该标志:

 getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); 

这对我工作:

  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); getWindow().setStatusBarColor(getResources().getColor(R.color.some_color)); } 

您是否将目标SDK版本设置为21? 当我将目标SDK版本设置为19时,我遇到了同样的问题。您可以将min SDK降到最低。

当然,你需要从正确的主题inheritance,并确保你的活动使用它。

检查是否正在编辑values-v21文件夹中的styles.xml 。 如果您将SDK版本设置为21,那么它将不会在values文件夹中查找styles.xml (但它应该这样做)。

在这里输入图像说明

testing我的nexus7 5.1.1

在style.xml中设置v21 / v22是行不通的

 <item name="android:windowDrawsSystemBarBackgrounds">true</item> <item name="android:statusBarColor">@android:color/holo_red_dark</item> 

设置在actvivity

 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); getWindow().setStatusBarColor(getResources().getColor(android.R.color.holo_red_dark)); } 

是为我工作

通过设置colorPrimaryDark,更改棒棒糖前(5.0)中的状态栏颜色是不可能的。 看到这篇文章 。

在较老的平台上,AppCompat在可能的情况下模拟颜色主题。 目前这仅限于着色动作栏和一些小部件。

在我的情况下, values-v21/styles.xml包含以下行,它们覆盖了values/style.xml使用colorPrimaryDark定义的状态栏颜色:

 <item name="android:statusBarColor">@android:color/transparent</item> 

删除这个为我工作。

在我的情况下,罪魁祸首是jfeinstein10/SlidingMenu库。 我用Android navigation drawer取代了库,现在它正确显示状态栏的颜色。

v22-appcompat他们(Android)现在已经在android studio预览中添加了状态栏颜色的渲染!

关于时间…不pipe怎样,确保你的appcompat库更新到最新版本,这是v22.0。+。

干杯!

我正在做一个旧的应用程序,并试图将其转换为材料样式。 代码和一切都很好,但是唯一的错误是阻止棒棒糖设备上的状态栏着色为build.gradle中的“TargetSDKVersion” 。 它被设置为21以下。我将其更改为21,状态栏着色开始工作。

这对我有效。 从样式中删除了状态栏的颜色。 添加标志,然后把你想要的颜色如此

 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); getWindow().setStatusBarColor(getResources().getColor(R.color.your_color)); }