Elye
Elye

Reputation: 60251

Can AppBarLayout with RecyclerView works without letting RecyclerView over-scroll?

I have a layout with CoordinatorLayout, AppBarLayout and RecyclerView as below.

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#aaa"
    tools:context="com.elyeproj.recycleranimation.MainActivity">

    <android.support.design.widget.AppBarLayout
        android:id="@+id/appbar"
        android:layout_width="match_parent"
        android:layout_height="256dp"
        android:fitsSystemWindows="true"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

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

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

            <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
                app:layout_collapseMode="pin" />

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

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

    <android.support.v7.widget.RecyclerView
        android:id="@+id/myRecyclerView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#aaa"
        app:layout_behavior="@string/appbar_scrolling_view_behavior" />

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

It works fine where the AppBarLayout could shrink as the RecyclerView scroll as shown in GIF below. It won't scroll beyond row 100.

enter image description here

When the list is short, it is not scrollable, since the RecyclerView is wrap-content, as shown below

enter image description here

However, when the list is not too short, but not longer than the page height, the scrolling went beyond the row "100", and display some empty space as below.

enter image description here

My question is, for scenario 3, is it possible to have a way to prevent over-scroll, i.e. the scrowing happens until row 100 only, and the AppBarLayout still visible partly as above?

Upvotes: 7

Views: 2692

Answers (1)

inhogo
inhogo

Reputation: 273

Try RecyclerView height to match_parent.

Upvotes: 2

Related Questions