首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将SDK设置为27后活动中的状态栏颜色始终是灰色的

将SDK设置为27后活动中的状态栏颜色始终是灰色的
EN

Stack Overflow用户
提问于 2018-03-14 15:54:32
回答 4查看 2.7K关注 0票数 4

其他人在使用sdk 26或27后遇到状态栏的问题时总是灰色的吗?我最近更新了Android,并使用27作为我的目标sdk,现在启动的每个活动都有一个灰色状态栏。我没有改变风格或主题,但它们总是灰色的。

另一个有趣的发展是我的MainActivity在那里有一个导航抽屉,它没有问题,在我的原色上呈现半透明状态。但我在那里发起的每一项活动都有灰色状态栏。我完全不知道为什么,但我认为这是SDK版本,因为我以前没有任何问题。

每个活动都引用此样式,它过去既适用于MainActivity,也适用于所有其他活动:

代码语言:javascript
运行
复制
<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>

我可以通过移除半透明标志和手动设置状态条颜色来解决灰色问题。然而,这现在打破了MainActivity的导航抽屉,打开半透明的状态栏(这只是坚实的颜色)。在一个完美的世界里,我希望在所有的活动中,在我的原色之上设置半透明的状态栏。

任何帮助都将不胜感激!

更新:如果我使用SDK 27并使用它更新支持依赖项,我可以确认问题本身。如果我回到SDK 26版本,问题似乎就消失了。有什么与27特别相关的事情,我们需要注意吗?

EN

回答 4

Stack Overflow用户

发布于 2018-03-15 08:50:26

在styles.xml(V21)中添加这一行:

代码语言:javascript
运行
复制
<item name="android:statusBarColor">@color/PrimaryDark</item>

它可以解决你的问题。

票数 5
EN

Stack Overflow用户

发布于 2018-03-15 13:36:56

正如我在评论中指出的那样,我遇到了一个类似的问题,这个问题在API27中才开始显现出来。状态栏不是特别灰色的-它只是透明的。

我的特殊解决方案是,我values-v21文件夹中的values-v21如下:

代码语言:javascript
运行
复制
  <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版本中,这个不确定的行并没有影响状态栏--这本身可能是一个单独的问题。这个问题似乎已经在API27中解决了,这就是为什么状态栏现在看起来是透明的。

票数 3
EN

Stack Overflow用户

发布于 2018-05-25 14:54:00

API 27也有同样的问题。

在styles.xml(v21)中,我有:

代码语言:javascript
运行
复制
    <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> 

然后,在我的应用程序的根布局中添加了以下内容:

代码语言:javascript
运行
复制
       android:background="@color/colorPrimary"
       android:fitsSystemWindows="true"

解决了我的问题。

我正在使用第二个CoordinatorLayout ,它按照 this answer 中的建议包装AppBar,因为它没有在状态栏上显示AppBar的阴影

正如我所看到的,问题是根CoordinatorLayout是在StatusBar后面绘制的,背景是白色,但是AppBar不是。

编辑:经过更多的测试,我可以说在styles.xml(21)中使用:@android:color/透明

代码语言:javascript
运行
复制
        <item name="android:windowTranslucentStatus">true</item> 

并在我的根布局中使用:

代码语言:javascript
运行
复制
   android:background="@color/colorPrimaryDark"

结果有更好的颜色感。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49282316

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档