状态栏颜色未显示 - 5.0 Lollipop Android Studio:(AppCompat-v7:r21)

Adi*_*fyr 40 android statusbar android-appcompat android-studio android-5.0-lollipop

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

那有什么不对?我错过了什么吗?请告诉我.谢谢.

编辑: 我知道在Pre-Lollipop版本上更改状态栏颜色是不可能的.我的XML Layout Editor Preview和my Emulator都设置为API Level 21(5.0 Lollipop).但是,状态栏仍然不是我设置的颜色colorPrimaryDark.我想这样做statusBarColorstyles.xml,但无济于事.它仍然是黑色的.

另外: 我在一个类似的问题上看到了一个答案,他们建议我把它放到minSdkVersion21号.我试过了,但是没有用.我希望我的应用程序在API级别15及以上的设备上运行.

Way*_*yne 35

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

android.view.WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS
Run Code Online (Sandbox Code Playgroud)

android.view.WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS
Run Code Online (Sandbox Code Playgroud)

不得设置(来源)

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

getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
Run Code Online (Sandbox Code Playgroud)

  • 嘿,这里只是一个小问题,有没有办法通过xml添加这个标志? (5认同)
  • <item name ="android:windowDrawsSystemBarBackgrounds"> true </ item> (3认同)

Phi*_* E. 35

这对我有用:

   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));
    }
Run Code Online (Sandbox Code Playgroud)


Bla*_*der 12

您是否将目标SDK版本设置为21?当我将目标SDK版本保留为19时,我遇到了同样的问题.您可以将最小的SDK保留为更低的值.

当然,您需要从正确的主题继承并确保您的Activity使用它.


gki*_*iko 6

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

在此输入图像描述


Try*_*sai 6

测试我的nexus7 5.1.1

在style.xml v21/v22中设置不起作用

<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:statusBarColor">@android:color/holo_red_dark</item>
Run Code Online (Sandbox Code Playgroud)

设定为活力

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));
}
Run Code Online (Sandbox Code Playgroud)

对我有用

  • 可以证实这一点.我真是太乱了......我已经厌倦了这个 (5认同)