Используйте все возможности Android правильно с помощью WindowInsetsAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Используйте все возможности Android правильно с помощью WindowInsets

Сообщение Anonymous »

Я пытаюсь добиться корректной сквозной работы ( с API 21–29.

Я использую это в своем 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
}
}
Кроме того, я устанавливаю android:fitsSystemWindows=true в своем AppBarLayout.



При этом все выглядит нормально на 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»