AppBarLayout.ScrollingViewBehavior - нижняя часть экрана за пределами экрана - PullRequest
0 голосов
/ 30 ноября 2018

При использовании AppBarLayout со стандартным ScrollingViewBehavior родной брат AppBarLayout по умолчанию будет иметь высоту CoordinatorLayout, а нижняя часть родного брата будет находиться вне экрана по высоте AppBarLayout.

В моемВ случае использования NestedScrollView - это просто средство, позволяющее свернуть панель инструментов, в то же время отображая другой прокручиваемый вид (фрагмент в данном случае) под складной панелью инструментов.Фрагмент - это тот, который содержит вид снизу (FAB в данном случае)1009 *

Fab Offscreen Wrong Height, Expanded Wrong Height, Collapsed

1 Ответ

0 голосов
/ 30 ноября 2018

Решение, которое я нашел для этой проблемы, состоит из 2 частей.

  1. Добавьте отступ, равный высоте AppBarLayout, в ДНО NestedScrollView.В моем случае, поскольку AppBarLayout содержал только Toolbar, высота была ?attr/actionBarSize.
    android:paddingBottom="?attr/actionBarSize"

  2. Добавление пользовательского AppBarLayout.OnOffsetChangedListener к AppBarLayout, которыйизменяет высоту NestedScrollView при сворачивании панели инструментов.

    class ScrollingOffsetFixListener(
        private val nestedScrollView: NestedScrollView
    ): AppBarLayout.OnOffsetChangedListener {
    
    private var originalHeight = 0
    private var firstOffset = true
    
    override fun onOffsetChanged(layout: AppBarLayout?, offset: Int) {
        if(firstOffset) {
            firstOffset = false
            originalHeight = nestedScrollView.measuredHeight
        }
    
        val params = nestedScrollView.layoutParams
        params.height = originalHeight + (offset * -1)
    
        nestedScrollView.layoutParams = params
       }
    }
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...