Scolling with multiple RecyclerViews in Layout

前端 未结 2 609
后悔当初
后悔当初 2020-12-14 13:13

I have created a layout which has two RecyclerViews. One scrolls horizontally while other scrolls vertically. I can scroll correctly inside each RecyclerView but the page as

相关标签:
2条回答
  • 2020-12-14 13:41

    I was able to solve the problem by putting everything inside ScrollView and then setting height of vertical RecyclerView manually/programmatically.

    <?xml version="1.0" encoding="utf-8"?>
    <ScrollView
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:id="@+id/scrollView">
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical">
    
                <EditText
                    android:id="@+id/search"
                    android:layout_width="fill_parent"
                    android:layout_height="50dp"
                    android:hint="Search Dramas"
                    android:textSize="16sp"
                    android:paddingLeft="10dp"
                    android:gravity="center"
                    android:textColor="@color/dark_grey"
                    android:textColorHint="@color/dark_grey"
                    android:background="@drawable/border_bottom"/>
    
    
                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:background="@drawable/border_bottom_background_black"
                    android:textColor="@color/white"
                    android:padding="10dp"
                    android:text="Most Watched"/>
    
                <!-- A RecyclerView to display horizontal list -->
                <android.support.v7.widget.RecyclerView
                    android:id="@+id/featured"
                    android:scrollbars="none"
                    android:layout_width="fill_parent"
                    android:layout_height="240dp"
                    android:paddingLeft="0dp"
                    android:paddingRight="15dp"
                    android:paddingTop="15dp"
                    android:paddingBottom="25dp"
                    android:background="@color/black"/>
    
                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:background="@drawable/border_bottom_backgroundless"
                    android:textColor="@color/dark_grey"
                    android:padding="10dp"
                    android:text="All Dramas"/>
    
                <!-- A RecyclerView to display list -->
                <android.support.v7.widget.RecyclerView
                    android:id="@+id/pick_item"
                    android:paddingBottom="20dp"
                    android:scrollbars="vertical"
                    android:layout_width="fill_parent"
                    android:layout_height="match_parent"
                    android:minHeight="840dp"/>
    
    
        </LinearLayout>
    </ScrollView>
    

    Setting RecyclerView's height programmatically:

    LinearLayout.LayoutParams params = new     
         LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, 
         ViewGroup.LayoutParams.WRAP_CONTENT);
    // calculate height of RecyclerView based on child count
    params.height=1150;
    // set height of RecyclerView
    recyclerView.setLayoutParams(params);
    
    0 讨论(0)
  • 2020-12-14 13:50

    RecyclerView only gained (still limited) support for nested scrolling in version 22.2.0 - my first suggestion would be to try that.

    The only view that fully supports nested scrolling is NestedScrollView (you can see this by noting that it implements both NestedScrollingChild and NestedScrollingParent) and was added in Support v4 version 22.1.0 (slightly improved in 22.2.0). If you only have a single horizontal RecyclerView as the topmost item in your vertical RecyclerView, you could instead replace that with a NestedScrollView that contains a LinearLayout with your horizontal RecyclerView followed by your vertical RecyclerView.

    0 讨论(0)
提交回复
热议问题