Я использую это в своем v27\themes.xml:
Код: Выделить всё
true
@android:color/transparent
Код: Выделить всё
override fun onWindowFocusChanged(hasFocus: Boolean) {
super.onWindowFocusChanged(hasFocus)
if (hasFocus) {
window.decorView.systemUiVisibility =
View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_LAYOUT_STABLE
}
}
При этом все выглядит нормально на API >= 27, где содержимое прокручивается за теперь прозрачной панелью навигации, но в старых API содержимое закрыто черным цветом. панель навигации.
Я знаю, что мне нужно получить WindowInsets и добавить его к существующему отступу (или, в случае AppBarLayout, это будет обрабатывать вставки самостоятельно), но я не могу заставить его работать с FAB.
Я нашел эту статью о добавлении вставки к отступу представления но поскольку FAB использует запас, я не уверен, что я на правильном пути.
Есть ли какая-либо документация, например, передовой опыт обработки вставок при переходе от края к краю? Кажется, что некоторые виджеты, такие как AppBarLayout, справляются с этим изящно, но как я могу заставить FAB также регулировать свои поля?
Обновление 1
Чтобы указать, что при добавлении android:fitsSystemWindows=true в координаторLayout он также обрабатывает вставки, но с серьезный недостаток:
У меня есть два макета, каждый из которых имеет координатор.: «родительский макет» определяет координатор. с AppBarLayout и FrameLayout для хранения фактического содержимого и «дочернего макета», используемого фрагментом, помещенным в последний.
Из-за этого я не могу добавить Android :fitsSystemWindows=true в дочерний макет, потому что это приведет к появлению пустого пространства сверху (между панелью инструментов и содержимым), и я не могу поместить его в родительский макет, потому что тогда FAB не будет обновлен до вставки.
Подробнее здесь: https://stackoverflow.com/questions/572 ... ndowinsets
Мобильная версия