Приложение, над которым я работаю, использует прозрачные системные панели в версиях Android, которые его поддерживают.Это достигается с помощью следующего определения в стиле:
<item name="android:navigationBarColor">@android:color/transparent</item>
<item name="android:statusBarColor">@android:color/transparent</item>
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
и следующего кода:
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
/* Make system bars fully transparent */
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION);
}
В обычном режиме это работает, как и ожидалось: и статус, и панель навигации отображаютсяналожение на содержимое приложения.
В режиме разделенного экрана это работает для строки состояния, но не для панели навигации: в портретном режиме, когда приложение находится внизу, панель навигации черная, но getWindow().getDecorView().getRootWindowInsets().getSystemWindowInsetBottom()
сообщает о вставке 144 пикселей.Высота вида декора на 144 пикселя меньше, чем у корневого вида (без разделенного экрана они оба равны, поскольку в приложении нет панели действий).Аналогичные симптомы в ландшафтном режиме, когда приложение находится справа (как панель навигации).
Добавление флага View.SYSTEM_UI_FLAG_LAYOUT_STABLE
не оказывает никакого влияния.
Устройство представляет собой смартфон, т.е.устройство, которое по умолчанию установлено в книжный режим и показывает боковую панель навигации в режиме альбомной ориентации.
Это ошибка в используемом мной дистрибутиве Android (LineageOS 15.1, Android 8.1.0) или я отсутствуетчто-то?Должна ли панель навигации быть прозрачной в режиме разделенного экрана?Если нет, как я могу надежно определить, какие части моего обзора будут скрыты системными панелями?