Search code examples
androidandroid-layoutandroid-studioscrollandroid-recyclerview

Create a RecyclerView with both horizontal and vertical scrolling


Over the past few weeks I've been learning to use the RecyclerView. I need to implement a horizontal list, ie, that by turning the device in landscape mode like so:

enter image description here

I found the best solution for this (how to create the horizontal displacement of RecyclerView, here), but encountered another problem. The item RecyclerView was larger than the height of the device (in landscape, horizontal), so I need to create a vertical and horizontal displacement, simultaneously.

I looked at the Android Developer methods for the LayoutManager class, but my skills are not high enough to understand most of the methods. I also tried putting a RecyclerView vertically inside another RecyclerView horizontally with all the content, but I get error:

IllegalStateException: RecyclerView has no LayoutManager

To rememedy this I removed all <View ... /> elements from the XML file, but this does not give any results.

To clarify what I am asking: is it possible to have my layout scroll both horizontally and vertically, and if you could explain how I would appreciate it.


Solution

  • I was so angry about all the problems that had tended with the application that had not thought about the easiest solution.

    In a RecyclerView consists of two XML files, the main one where the RecyclerView is declared and another with content.

    The simplest solution was to introduce the RecyclerView within a ScrollView. So I can move all items at a time thanks to ScrollView vertically and horizontally I can move the items thanks to RecyclerView in landscape mode.

    activity_main.xml

    <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_margin="@dimen/cardIn_margin_ext">
    
            <android.support.v7.widget.RecyclerView
                android:id="@+id/recycler_view"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:scrollbarStyle="outsideInset"
                android:scrollbars="horizontal" />
    
    </ScrollView>