Comments 2
Что насчёт landscape ориентации на телефонах? Ведь в этом случае Navigation Bar будет слева/справа. У вас в решении это никак не учтено?
C Landscape будет немного посложнее, как раз из-за того, что navbar может быть слева/справа, и при этом снизу на планшетах может выдвинуться клавиатура.
Чтобы пример работал корректно с такими входными данными, нужно добавить недостающие поля в listener:
Добавить эти параметры в вызов listener'а:
И реагировать на них в Activity:
Таким образом, мы будем корректно обрабатывать все кейсы поворота экрана и выезжающую снизу клавиатуру.
Чтобы пример работал корректно с такими входными данными, нужно добавить недостающие поля в listener:
typealias OnSystemInsetsChangedListener = (
statusBarSize: Int,
bottomNavigationBarSize: Int,
leftNavigationBarSize: Int,
rightNavigationBarSize: Int
) -> Unit
Добавить эти параметры в вызов listener'а:
listener(topInset, if (hasKeyboard) 0 else bottomInset, leftInset, rightInset)
И реагировать на них в Activity:
private fun updateMargins(
statusBarSize: Int,
bottomNavigationBarSize: Int,
leftNavigationBarSize: Int,
rightNavigationBarSize: Int
) {
toolbar.updateMargin(top = statusBarSize)
change_bg_btn.updateMargin(bottom = bottomNavigationBarSize)
toolbar.updateMargin(left = leftNavigationBarSize)
right_aligned_tv.updateMargin(right = rightNavigationBarSize)
}
Таким образом, мы будем корректно обрабатывать все кейсы поворота экрана и выезжающую снизу клавиатуру.
Sign up to leave a comment.
Edge-to-edge в Android: делаем правильно