状态栏颜色不显示 – 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)); }