Полупрозрачная строка состояния Android, но непрозрачная панель навигации (если есть)

Я пытаюсь создать заставку для приложения Android с помощью этой статьи: Правильные экраны-заставки. Как говорится в статье, я создал LayerDrawable с двумя слоями: растровое изображение фона и логотип (тоже растровое изображение). Логотип должен располагаться внизу экрана с отступом 32 dp, например. Здесь мой рисунок:

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

I pointed this drawable as android:windowBackground param in my splash activity theme. I also want to have transparent status bar when splash screen is shown on devices where this feature is supported (API >=19), so I created two resource files for different android versions and in values-v19\styles.xml I pointed flag android:windowTranslucentStatus as true. Here my values/styles.xml and values-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>

и
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>

Но на некоторых устройствах Android с Soft NavigationBar мой логотип перекрывается им. Логотип перекрывается панелью навигации
Я пытался указать флаг android:windowTranslucentNavigation как ложный, но безуспешно.

Есть ли способ сделать Android Soft NavigationBar прозрачным вместе с прозрачной строкой состояния, или мне нужно определить доступность Soft NavigationBar в методе onCreate моей активности-заставки и обновить мой LayerDrawable, добавив нижний отступ для логотипа к высоте NavigationBar?

Спасибо.


person ibogolyubskiy    schedule 26.02.2017    source источник


Ответы (2)


Вы пробовали это?

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

Также вы можете добавить небольшое нижнее дополнение к своему растровому элементу в слое, который можно нарисовать.

person albeee    schedule 26.02.2017

Я столкнулся с той же проблемой и решил эту проблему, установив следующие атрибуты.

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

Эти атрибуты установлены в каталог values-v21.

person angelo yan    schedule 18.04.2017