Android 半透明状态栏但非半透明导航栏(如果存在)

Posted

技术标签:

【中文标题】Android 半透明状态栏但非半透明导航栏(如果存在)【英文标题】:Android translucent status bar but non-translucent navigation bar (if present) 【发布时间】:2017-07-16 20:02:12 【问题描述】:

我正在尝试使用这篇文章为 android 应用程序创建启动画面:Splash Screens the Right Way。正如文章所说,我创建了具有两层的 LayerDrawable:背景位图和徽标(也是位图)。例如,徽标需要位于屏幕底部,缩进 32dp。这是我的可绘制对象:

<item
    android:drawable="@drawable/splash_image" />

<item
    android:id="@+id/logo"
    android:bottom="@dimen/margin_splash">

    <bitmap
        android:gravity="bottom|center"
        android:src="@drawable/logo_green" />
</item>

我在我的启动活动主题中将这个可绘制对象指定为android:windowBackground 参数。我还希望在支持此功能(API >=19)的设备上显示启动画面时有透明的状态栏,所以我为不同的 android 版本创建了两个资源文件,在 values-v19\styles.xml 中我指出了标志 @ 987654326@ 为真。这是我的values/styles.xmlvalues-v19/styles.xml

values/styles.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="SplashTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="android:windowBackground">@drawable/bg_splash</item>
    </style>
</resources>

values-v19/styles.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="SplashTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="android:windowBackground">@drawable/bg_splash</item>
        <item name="android:windowTranslucentStatus">true</item>
    </style>
</resources>

但是在一些带有 Soft NavigationBar 的 Android 设备上,我的徽标被它重叠了。 我试图将android:windowTranslucentNavigation 标记为假但没有成功。

有什么方法可以让 Android Soft NavigationBar 与 透明状态栏,或者我需要在我的启动活动的 onCreate 方法中检测 Soft NavigationBar 的可用性,并通过将徽标的底部缩进添加到 NavigationBar 的高度来更新我的 LayerDrawable?

谢谢。

【问题讨论】:

【参考方案1】:

你试过了吗?

<item name="android:navigationBarColor">@android:color/transparent</item> <item name="android:windowTranslucentStatus">false</item> <item name="android:windowTranslucentNavigation">false</item>

您还可以在可绘制图层中对位图项目进行一点底部填充。

【讨论】:

【参考方案2】:

我遇到了同样的问题,通过设置以下属性解决了这个问题。

<item name="android:windowDrawsSystemBarBackgrounds">false</item>

此属性设置为 values-v21 目录。

【讨论】:

以上是关于Android 半透明状态栏但非半透明导航栏(如果存在)的主要内容,如果未能解决你的问题,请参考以下文章

android 4.4 的标签和半透明状态栏/导航出现问题

Android 4.4 — 半透明状态/导航栏 — fitSystemWindows/clipToPadding 不能通过片段事务工作

可靠获取状态栏高度解决KitKat半透明导航问题

可靠获取状态栏高度解决KitKat半透明导航问题

Android:半透明状态栏不适用于 Google Maps API

Android 5.0 半透明状态栏