Skip to content

Latest commit

 

History

History
57 lines (42 loc) · 2.18 KB

recycler-scrolling.md

File metadata and controls

57 lines (42 loc) · 2.18 KB

RecyclerView Scrolling Issue with NestedScrollView

Although RecyclerView has a very good and smooth scrolling built-in, but when you put into any ScrollView, then your RecyclerView's scrolling will not work. For example,

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

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

        <android.support.v7.widget.RecyclerView
            android:id="@+id/listRecyclerView"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_marginBottom="@dimen/_10sdp"
            tools:listitem="@layout/activity_type_item_layout"/>

    </LinearLayout>

</ScrollView>

Now, the RecyclerView will not scroll. To fix that, you will have to use NestedScrollView instead of ScrollView like this:

<android.support.v4.widget.NestedScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent">

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

        <android.support.v7.widget.RecyclerView
            android:id="@+id/listRecyclerView"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_marginBottom="@dimen/_10sdp"
            tools:listitem="@layout/activity_type_item_layout"/>

    </LinearLayout>

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

Now, the RecyclerView will scroll but it will not be smooth. It will stop as soon as finger is off the screen resulting in a very stucking scrolling. To fix this issue, all you have to do is add this line after RecyclerViews adapter has been set.

ViewCompat.setNestedScrollingEnabled(listRecyclerView, false);

Now, your RecyclerView will work with smooth scrolling. This same technique can be used in ViewPager when each Fragment have RecyclerView and the ViewPager is inside any CollapsingToolbarLayout.