CoordinatorLayout оставляет пустое место внизу после прокрутки

Я пытаюсь реализовать новейшие трюки дизайна Google с CoordinatorLayout, и у меня проблемы с прокруткой и эффектом параллакса.

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

Это выглядит примерно так:

Соответствующий код:

<FrameLayout 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">

<CoordinatorLayout
    android:layout_height="match_parent"
    android:layout_width="match_parent">

    <AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <CollapsingToolbarLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:layout_scrollFlags="scroll|exitUntilCollapsed"
            app:expandedTitleMarginStart="72dp"
            app:expandedTitleMarginEnd="16dp">

            <ImageView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                app:layout_collapseMode="parallax"/>
        </CollapsingToolbarLayout>
    </AppBarLayout>

    <ViewPager
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior"/>

</CoordinatorLayout>
</FrameLayout>

Это странное поведение происходит случайно. Иногда вид снизу можно прокручивать как обычно, и это пустое место не появляется. Что я делаю неправильно? Благодарю.

3 ответа

У меня была такая же проблема, и я заметил, что каждый макет с этой проблемой

android:fitsSystemWindows="true"

на CoordinatorLayout

Удаление это решило мою проблему везде.

Попробуй добавить Toolbar внутри твоего CollapsingToolbarLayout:

 <android.support.design.widget.CollapsingToolbarLayout>

            <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                android:minHeight="?attr/actionBarSize"
                app:layout_collapseMode="pin"/>
...
</android.support.design.widget.CollapsingToolbarLayout>

Также попробуйте добавить

андроид: MinHeight="атр /actionBarSize"

в ToolbarCollapsingToolbarLayout а также AppBarLayout

По причинам навигационных флагов android:fitsSystemWindows="true" не соответствует моим потребностям.

После некоторой игры я обнаружил, что добавление еще одного CollapsingToolbarLayout с 0dp hieght делает свое дело.

<android.support.design.widget.CollapsingToolbarLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    app:layout_scrollFlags="scroll|snap" />