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

时间:2017-02-26 04:52:41

标签: android navigationbar layerdrawable

我正在尝试使用这篇文章为{@ 3}}创建Android应用程序的启动画面。正如文章所说,我创建了两层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 param。我还希望在支持此功能的设备上显示启动画面时具有透明状态栏(API&gt; = 19),因此我为不同的Android版本和值创建了两个资源文件-v19 \ styles.xml我指向了标志android:windowTranslucentStatus为真。这是我的values/styles.xmlvalues-v19/styles.xml

值/ 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>


值-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设备上,我的徽标与之重叠。 Splash Screens the Right Way
我试图将android:windowTranslucentNavigation标记为false,但没有成功。

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

感谢。

2 个答案:

答案 0 :(得分:0)

你试过这个吗?

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

此外,您可以在图层drawable中的位图项目上添加一些底部填充。

答案 1 :(得分:0)

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

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

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