NestedScrollView не будет прокручиваться до конца при использовании с CollapsingToolbarLayout

Я хочу использовать NestedScrollView с CollapsingToolbarLayout. В NestedScrollView действительно длинный контент. К сожалению, я не могу прокрутить до конца. Часть этого длинного контента вырезана. Что странно, когда я переворачиваю экран, прокрутка работает нормально и весь контент виден.

<android.support.design.widget.CoordinatorLayout
    android:fitsSystemWindows="true"
    android:layout_height="match_parent"
    android:layout_width="match_parent">

    <android.support.design.widget.AppBarLayout
        android:fitsSystemWindows="true"
        android:layout_height="wrap_content"
        android:layout_width="match_parent">

        <android.support.design.widget.CollapsingToolbarLayout
            android:fitsSystemWindows="true"
            android:layout_height="match_parent"
            android:layout_width="match_parent"
            app:contentScrim="?attr/colorPrimary"
            app:layout_scrollFlags="scroll|exitUntilCollapsed">

            <ImageView
                android:fitsSystemWindows="true"
                android:layout_height="wrap_content"
                android:layout_width="match_parent"
                android:scaleType="centerCrop"
                android:src="@drawable/u8"
                app:layout_collapseMode="parallax"/>

            <android.support.v7.widget.Toolbar
                android:layout_height="?attr/actionBarSize"
                android:layout_width="match_parent"
                app:layout_collapseMode="pin"/>

        </android.support.design.widget.CollapsingToolbarLayout>

    </android.support.design.widget.AppBarLayout>

    <android.support.v4.widget.NestedScrollView
        android:clipToPadding="false"
        android:layout_height="match_parent"
        android:layout_width="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior">

        <LinearLayout
            android:layout_height="match_parent"
            android:layout_width="match_parent"
            android:orientation="vertical">

            <!-- lots of widgets-->

        </LinearLayout>

    </android.support.v4.widget.NestedScrollView>

</android.support.design.widget.CoordinatorLayout>

РЕДАКТИРОВАТЬ: я заметил, что высота вырезанного содержимого такая же, как высота панели инструментов.

6 ответов

Ответ взят отсюда. Добавление paddingBottom в NestedScrollView решило эту проблему для меня:

android:paddingBottom="<toolbar height in collapsed state>"

Я также столкнулся с аналогичной проблемой, когда NestedScrollView не прокручивался до конца при открытой клавиатуре.

Размещение AppBarLayout после NestedScrollView помогло мне. Дайте мне знать, если это работает для вас.

Я была такая же проблема. Одной из причин этой ошибки была не установка SupportActionBar

final Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

(Я не сделал этого, потому что мне нужна была панель инструментов только для того, чтобы сворачивающаяся панель инструментов работала, как ожидалось, и я подумал, что для setSupportActionBar это не важно)

И другой был использование внутри деятельности работало, но во фрагменте не работал правильно

Что вызывает это для меня, так это строка "exitUntilCollapsed" в моем CollapsingToolbarLayout:app:layout_scrollFlags="scroll|exitUntilCollapsed">

Это вызывает проблемы при использовании с "прокруткой". Я также не мог использовать marginBottom, потому что у меня есть опция мгновенного перевода, которая обновляет TextViews новым контентом, и когда это происходит, он загадочным образом решает прокрутить еще больше, что в итоге приводит к действительно плохо выглядящему пустому пространству внизу.

Я решил это, используя "enterAlwaysCollapsed", вместо этого и переместил мою панель инструментов на самый верх, вне коллапса. Это не совсем то, что я хочу, но до сих пор я не мог найти решение.

Прошло много времени с тех пор, как задал вопрос. Но может быть установка minHeight атрибут в CollapsingToolbarLayout, как в этом ответе, может также помочь кому-то.

Из-за закрепленной панели инструментов (с CollapsingToolbar). Nestedscrollview не удалось настроить вид снизу с экрана.

Если вы установите панель инструментов на setSupportActionBar. NestedScrollView будет соответствовать экрану.

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar); 

Используйте свойство app:layout_behavior="@string/appbar_scrolling_view_behavior" и вложенный режим прокрутки, он будет работать

<android.support.design.widget.CoordinatorLayout
            xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:app="http://schemas.android.com/apk/res-auto"
            android:layout_width="match_parent"
            android:layout_height="match_parent">
        <android.support.design.widget.AppBarLayout
                xmlns:android="http://schemas.android.com/apk/res/android"
                xmlns:app="http://schemas.android.com/apk/res-auto"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

            <android.support.v7.widget.Toolbar
                    android:id="@+id/toolbar"
                    android:layout_width="match_parent"
                    android:layout_height="?attr/actionBarSize"
                    android:background="?attr/colorPrimary"
                    app:layout_scrollFlags="scroll|enterAlways"
                    app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>

        </android.support.design.widget.AppBarLayout>
        <android.support.v4.widget.NestedScrollView
                android:id="@+id/task_recycler_view"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:fillViewport="true"
                app:layout_behavior="@string/appbar_scrolling_view_behavior">
        </android.support.v4.widget.NestedScrollView>
    </android.support.design.widget.CoordinatorLayout>