首页 文章

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

提问于
浏览
40

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

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

EDIT: I 'm aware of the fact that changing the status bar color on Pre-Lollipop versions is not possible. My XML Layout Editor Preview and my Emulator are both set to API Level 21 (5.0 Lollipop). But, the status bar still isn' t我在 colorPrimaryDark 中设置的颜色 . 我试着在 styles.xmlstatusBarColor ,但无济于事 . 它仍然是黑色的 .

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

11 回答

  • 34

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

    android.view.WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS
    

    android.view.WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS
    

    不得设置(Source

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

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

    这对我有用:

    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));
        }
    
  • 5

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

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

  • 35

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

    enter image description here

  • 1

    测试我的nexus7 5.1.1

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

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

    设定为活力

    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));
    }
    

    对我有用

  • 12

    通过设置colorPrimaryDark,无法更改pre-Lollipop(5.0)中的状态栏颜色 . 见this article .

    在较旧的平台上,AppCompat尽可能模拟颜色主题 . 目前,这仅限于为操作栏和一些小部件着色 .

  • 0

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

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

    删除这对我有用 .

  • 0

    就我而言,罪魁祸首是 jfeinstein10/SlidingMenu 库 . 我用 Android navigation drawer 替换了库,现在它正确显示状态栏颜色 .

  • 0

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

    关于时间......无论如何,请确保您的 appcompat 库已更新到最新版本,即v22.0 . .

    干杯!

  • 6

    我正在研究一个旧的应用程序,并试图将其转换为材料风格 . 代码和一切都很好,但我唯一的错误是阻碍状态栏着色> = Lollipop设备 "TargetSDKVersion"build.gradle . 它设置为少于21.我将其更改为21并且状态栏着色开始工作 .

  • 3

    这对我有用 . 从样式中删除状态栏颜色 . 添加标志,然后将您想要的颜色放入其中

    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));
    }
    

相关问题