requestLayout не отражает изменения после использования SYSTEM_UI_FLAG_HIDE_NAVIGATION - PullRequest
0 голосов
/ 21 октября 2018

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

if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) {
   int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
   View decorView = getWindow().getDecorView();
   decorView.setSystemUiVisibility(uiOptions);
}

RootRelativeLayout.requestLayout();

Код моей активности

<RelativeLayout xmlns:tools="http://schemas.android.com/tools"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/root_relativelayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    android:clipToPadding="true">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:orientation="horizontal">

    </RelativeLayout>

</RelativeLayout>

Внутренний RelativeLayout остается на своем месте, как будто панель навигации все еще существует, и не опускается в нижнюю часть экрана, даже если я вызвал requestLayout () для его родительского RelativeLayout.

Как вы видите на картинке, внизу есть пробоина enter image description here

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

Решение, к которому я пришел, состоит в том, чтобы установить для android: fitsSystemWindows значение false, а не true.

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

1 Ответ

0 голосов
/ 30 октября 2018

Для будущих поисковиков решение состоит в том, чтобы установить для fitsSystemWindows значение false.

android:fitsSystemWindows="false"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...