Строка состояния новых действий становится белой при использовании прозрачной строки состояния - PullRequest
0 голосов
/ 26 апреля 2019

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

Я понимаю, что это поведение достаточно обсуждалось в потоке Строка состояния становится белой и не отображает содержимое позади нее, но большинство предлагаемых решений сосредоточены вокруг отключения вашей прозрачной строки состояния, и я не мог заставить другие решения работать на меня.

Это макет одного из моих действий:

<?xml version="1.0" encoding="utf-8"?>

<androidx.coordinatorlayout.widget.CoordinatorLayout
    xmlns:android="http://schemas.android.com/apk/res/android"

    android:id="@+id/root_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true">

    <FrameLayout
        android:id="@+id/search_fragment_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</androidx.coordinatorlayout.widget.CoordinatorLayout>

Атрибут android:fitsSystemWindows="true" здесь, похоже, не имеет никакого эффекта, так как все содержимое моего макета активности уже соответствует границам системного окна.Это только то, что строка состояния полностью окрашена в белый цвет.

Я полагаюсь на свою прозрачную строку состояния и поэтому не могу ее отключить.Есть ли другой способ предотвратить описанное поведение?

1 Ответ

0 голосов
/ 28 апреля 2019

Теперь я определил два решения для достижения желаемого поведения:

  1. Изменение флагов окна в методе действия onCreate:
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);

Цвет строки состояния будет сероватым, чтобы системные значки снова были видны.

  1. Изменение цвета фона корневого макета действий в соответствии с желаемым цветом строки состояния:
<?xml version="1.0" encoding="utf-8"?>

<androidx.coordinatorlayout.widget.CoordinatorLayout
    xmlns:android="http://schemas.android.com/apk/res/android"

    android:id="@+id/root_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    android:background="@color/colorPrimaryDark">

    <FrameLayout
        android:id="@+id/search_fragment_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@android:color/white" />

</androidx.coordinatorlayout.widget.CoordinatorLayout>

Мне удалось найти последнее решение благодаря дружескому комментарию Феникс Ван .

...