Итак, у меня здесь много ответов о проблемах как со строкой состояния, так и со строкой навигации.Приложение, над которым я сейчас работаю, должно располагаться за строкой состояния, но не за панелью навигации, поскольку оно использует BottomBar в качестве основной навигации.
Итак, я попытался установить <item name="android:windowTranslucentNavigation">true</item>
, иустановка этого параметра на false
просто меняет оттенок элементов управления, за ним все еще рисуется контент.
Удаление window.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS)
отключает контент за строкой состояния и панелью навигации.Так что не ходи ...
Переключение android:fitsSystemWindows="true"
не решает проблему ...
Я пытался определить, видна ли панель навигации, но пока мне не удалось, даже если он не виден, resources.getIdentifier("navigation_bar_height", "dimen", "android")
будет возвращать значение, как если бы отображалась полоса.А атрибут config_showNavigationBar
работает только тогда, когда устройство имеет физические клавиши (например, Samsung)
Я тестирую на Moto X4 (Pie) и Xiaomi Note 6 Pro (Oreo),включение навигации с помощью жестов, чтобы скрыть панель навигации.
Печать (верх Xiaomi, низ X4):
1) Поведение «из коробки»:
![Tabs behind the Navigation Bar](https://i.stack.imgur.com/4f8wV.png)
2) При получении высоты NavBar и применении собственного поля к BottomBar:
![Added custom margin to the BottomBar, so it appears above the Navigation Bar](https://i.stack.imgur.com/b7EKD.png)
3) Нежелательное поведение при включенном режиме жестов:
![The black bar stays, because I can't listen for any property that hints if the Navigation Bar is actually there](https://i.stack.imgur.com/egHjP.png)
4) Ожидаемое поведение при включенном режиме жестов:
![The black bar should be hidden, because some property signaled that the navigation controls are not there](https://i.stack.imgur.com/tGdiu.png)