После применения 'fitsSystemWindows' на некоторых устройствах было создано пространство.Как я могу удалить это? - PullRequest
0 голосов
/ 27 июня 2019

В приложении у меня есть status bar и скрыть the bottom control bar.

В прошлый раз я использовал marginTop="20dp", чтобы соответствовать нижней строке строки состояния.Тем не менее, я проверил с Galaxy 10 И строка состояния очень отличается.Итак, Мое приложение выглядело странно, И решило проблему с применением этого атрибута в корневом представлении.

fitsSystemWindows = "true"

Однако, теперь у меня есть другая проблема, что bottom control bar скрыт, но есть пустое место какбольшой как нижняя панель управления после применения атрибута.Есть ли способ уместить экран, на котором отображается строка состояния и нет нижней панели управления (пока я ее скрываю)?

enter image description here

(желтый - MainActivityи черный - это фрагмент)

Розовая часть должна достигать дна, но не может достигнуть из-за этого атрибута.

Я проверил, и я думаю, что это просто происходит с kitkat и Q.

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

, это мой файл макета.

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:context="com.example.main.MainActivity">

    <fragment
        ...
    />
    ...
</FrameLayout>

Итак, я использую только один Activity, у которого много Fragments.

И вот что использует Activity:

    private fun hideStatusBar() {
        DisplayUtil.hideStatusBar(this)
        this?.window?.decorView?.setOnSystemUiVisibilityChangeListener { visibility ->
            if (visibility and View.SYSTEM_UI_FLAG_FULLSCREEN == 0) {
                DisplayUtil.hideStatusBar(this)
            }
        }
    }

    object DisplayUtil {
        fun hideStatusBar(activity: Activity?) {
            activity?.window?.decorView?.systemUiVisibility = (
                    View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
                            or View.SYSTEM_UI_FLAG_HIDE_NAVIGATION // hide nav bar
                            or View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY // hide status bar and nav bar after a short delay, or if the user interacts with the middle of the screen
                    )
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...