Pull to refresh

Comments 2

Что насчёт landscape ориентации на телефонах? Ведь в этом случае Navigation Bar будет слева/справа. У вас в решении это никак не учтено?
C Landscape будет немного посложнее, как раз из-за того, что navbar может быть слева/справа, и при этом снизу на планшетах может выдвинуться клавиатура.
Чтобы пример работал корректно с такими входными данными, нужно добавить недостающие поля в 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.