Scroll behavior in nested RecyclerView with horizontal scroll

29,740

Solution 1

As requested here is the solution I found good enough so far:

In my case I have a nestedScrollView with 4 RecyclerViews set to scroll horizontally inside. For each of those RecyclerViews I have done this programatically:

restaurantsRecylerView.setHasFixedSize(true); 
restaurantsRecylerView.setNestedScrollingEnabled(false);

You probably don't want the fixedSize, not sure if it will make any difference, my list is always 25 so I can use that for performance. After having done this I can scroll without issues even when I touch on the recyclerViews

Hope it helps

Solution 2

Try with RecyclerView inside android.support.v4.widget.NestedScrollView.

<android.support.v4.widget.NestedScrollView
        android:id="@+id/nScrollView"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

<!-- Set other views of your Layout -->

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

Also try with different layout_scrollFlags in Toolbar and

RecylerView.setNestedScrollingEnabled(false); // set it true or false as per requirement

Solution 3

We can achieve this in XML

android:nestedScrollingEnabled="false"
Share:
29,740
Anton Shkurenko
Author by

Anton Shkurenko

I'm Ukrainian guy, who likes to develop some Android applications. I prefer Java, but also I'm interested in Python and JavaScript. And Kotlin! Kotlin!

Updated on March 08, 2020

Comments

  • Anton Shkurenko
    Anton Shkurenko about 4 years

    I have to create vertical RecyclerView with nested horizontal RecyclerView in every item. Everything is within CoordinatorLayout. When I scroll by tapping outside nested RecyclerView toolbar hides, but when I scroll parent Recycler by tapping on nested one toolbar stays.

    Any help would be appreciated.

    Here is my xml layouts:

    main_activity.xml:

    <android.support.design.widget.CoordinatorLayout 
       ...>
    
    <FrameLayout
        android:id="@+id/fragment_frame"
        ...
        android:fitsSystemWindows="true"
        app:layout_behavior="@string/appbar_scrolling_view_behavior"/>
    
    <android.support.design.widget.AppBarLayout
        ...
        android:fitsSystemWindows="true"
        android:id="@+id/appbar_layout">
    
            <include layout="@layout/toolbar"/>
    
    </android.support.design.widget.AppBarLayout>
    </android.support.design.widget.CoordinatorLayout>
    

    Here is toolbar.xml :

    <android.support.v7.widget.Toolbar
        android:id="@+id/main_toolbar"
        ...
        android:fitsSystemWindows="true"
        app:layout_scrollFlags="scroll|enterAlways">
    
        <TextView .../>
    
    </android.support.v7.widget.Toolbar>
    

    fragment.xml:

    <android.support.v7.widget.RecyclerView
        ...
        android:scrollbars="vertical"
        app:layout_behavior="@string/appbar_scrolling_view_behavior"/>
    

    And recycler_view_item.xml:

    <RelativeLayout ...>
    
        <TextView .../>
    
        <!-- fixme(CullyCross) fix bug with hiding toolbar -->
        <android.support.v7.widget.RecyclerView
            ...
            android:scrollbars="horizontal"
            app:layout_behavior="@string/appbar_scrolling_view_behavior"
            />
    
    </RelativeLayout>
    

    Thanks,
    Anton