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>

EDIT: Я заметил, что высота разреза - это то же самое, что и высота панели инструментов.

Ответ 1

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

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

Ответ 2

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

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

Ответ 3

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

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

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

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

Ответ 4

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

Ответ 5

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

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

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

Ответ 6

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

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

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

Ответ 7

Используйте свойство 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>

Ответ 8

На моем устройстве может не (время от времени) получать высоту панели инструментов при разметке nestedScrollView. последний элемент может отображаться не полностью.

Если не важно точно обернуть вложенное представление, добавьте padding-bottom к nestedScrollView - это быстрое решение.

Или добавили строку setSupportActionBar(toolbar), если у вас есть настроенное меню, вам может потребоваться выполнить некоторую работу в onCreateOptionsMenu.