自从使用sdk 26或27以来,状态栏出现问题的其他任何人总是灰色的?我最近更新了Android Studio并使用27作为我的目标sdk,现在每个启动的Activity都有一个灰色状态栏。我没有改变风格或主题,但它们总是灰色的。
另一个有趣的发展是我的MainActivity在那里有一个导航抽屉,它没有问题呈现我的主要颜色的半透明状态。但是我从那里发起的每个Activity都有灰色状态栏。我完全迷失了为什么,但我假设它是SDK版本,因为我以前没有问题。
每个Activity都引用此样式,该样式曾用于MainActivity和所有其他活动:
<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:windowTranslucentStatus">true</item>
</style>
我可以通过删除半透明标志并在xml中手动设置状态栏颜色来解决灰色问题。然而,这现在打破了半透明状态栏下的MainActivity导航抽屉开口(它只是纯色)。在一个完美的世界里,我希望所有活动中的半透明状态栏都超过我的原色。
任何帮助将不胜感激!
更新 如果我使用SDK 27并使用它更新支持依赖项,我可以确认问题是否已经显现。如果我回到SDK 26版本,问题似乎就消失了。是否有一些我们需要注意的与27特别相关的内容?
答案 0 :(得分:4)
在styles.xml(v21)中添加此行:
<item name="android:statusBarColor">@color/PrimaryDark</item>
它可以解决您的问题。
答案 1 :(得分:3)
正如我在评论中所述,我遇到了一个类似的问题,只是在API27中才开始显现。状态栏不是特别灰色的 - 它只是透明的。
我的解决方案是我的styles.xml
文件夹中的values-v21
如下: -
<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:statusBarColor">@android:color/transparent</item>
</style>
删除android:statusBarColor
行为我解决了问题。
我将此作为答案发布的原因是,在早期的API版本中,此iffy行未影响状态栏 - 这本身可能是一个单独的问题。似乎这个问题已在API27中得到修复,这就是为什么状态栏现在显得透明。
答案 2 :(得分:1)
API 27的相同问题。
在styles.xml(v21)中,我有:
<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:windowTranslucentStatus">true</item>
<item name="android:windowActivityTransitions">true</item>
</style>
然后我在我的应用程序的根布局中添加了这个:
android:background="@color/colorPrimary"
android:fitsSystemWindows="true"
这解决了我的问题。
我正在使用第二个CoordinatorLayout
按this answer中的建议包装AppBar,因为没有在状态栏上显示AppBar的阴影
正如我所看到的,问题是根CoordinatorLayout
是在StatusBar后面绘制的,背景为白色,但AppBar不是。
编辑:经过多次测试,我可以说在styles.xml(21)中使用: @android:彩色/透明
<item name="android:windowTranslucentStatus">true</item>
并在我的根布局中使用:
android:background="@color/colorPrimaryDark"
会产生更好的色彩感。
答案 3 :(得分:1)
它仍然不能在SDK 28中使用,但是设置背景是解决此问题的好方法,例如:
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/primary"
android:fitsSystemWindows="true">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/defaultBackground"
android:orientation="vertical">
<!-- Some content -->
</LinearLayout>
</android.support.design.widget.CoordinatorLayout>