Android прозрачная строка состояния и пользовательский вид вставок

Я хочу нарисовать свой макет за прозрачной строкой состояния. Я использую контроллеры проводника для реализации экранов моего приложения, все они имеют белую строку состояния, но нужно, чтобы она была полностью прозрачной. Я не могу использовать флаг windowTranslucentStatus при входе в этот контроллер, потому что он заставляет мои макеты немного подскочить, когда контроллер входит и существует на экране. Я думаю, что пользовательские вставки окна могли бы помочь иметь один контроллер, который будет отображаться за строкой состояния без скачка макета, но я не могу понять, как это сделать. Может ли кто-нибудь помочь мне с этим, пожалуйста?

2 ответа

Использование android:fitsSystemWindows="true" в корневом представлении вашего макета.

Что значит fitsSystemWindows делать?

Системные окна - это части экрана, на которых система рисует неинтерактивный (в случае строки состояния) или интерактивный (в случае панели навигации) контент. Большую часть времени вашему приложению не нужно рисовать под строкой состояния или панелью навигации, но если вы это сделаете: вам нужно убедиться, что интерактивные элементы (например, кнопки) не скрыты под ними. Вот что дает стандартное поведение атрибута android: fitsSystemWindows = "true": оно устанавливает отступ представления, чтобы содержимое не перекрывало системные окна.

Источник

Для этого я бы рекомендовал вам скрыть строку состояния и включить полноэкранное окно. Попробуйте ниже, это работает.

Шаг 1: Создайте тему в style.xml

<style name="FullScreen" parent="Theme.AppCompat.NoActionBar">
    <item name="android:windowNoTitle">true</item>
    <item name="windowActionBar">false</item>
    <item name="android:windowFullscreen">true</item>
    <item name="android:windowContentOverlay">@null</item>
</style>

Шаг 2: Примените тему для действия в файле манифеста, также можете применить тему на уровне приложения. Например добавили в уровень активности.

<activity
    android:name=".MainActivity"
    android:theme="@style/FullScreen" />
Другие вопросы по тегам