How to use RecyclerView inside NestedScrollView?

前端 未结 24 2430
抹茶落季
抹茶落季 2020-11-22 03:39

How to use RecyclerView inside NestedScrollView? RecyclerView content is not visible after setting adapter.

UPDATE

相关标签:
24条回答
  • 2020-11-22 04:28

    This is what working for me

    <android.support.v4.widget.NestedScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fillViewport="true"
        app:layout_behavior="@string/appbar_scrolling_view_behavior">
    
        <android.support.v7.widget.RecyclerView
            android:id="@+id/rv_recycler_view"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:layout_behavior="@string/appbar_scrolling_view_behavior"/>
    </android.support.v4.widget.NestedScrollView>
    
    0 讨论(0)
  • 2020-11-22 04:29

    I have used this awesome extension (written in kotlin but can be also used in Java)

    https://github.com/Widgetlabs/expedition-nestedscrollview

    Basically you get the NestedRecyclerView inside any package lets say utils in your project, then just create your recyclerview like

     <com.your_package.utils.NestedRecyclerView
          android:id="@+id/rv_test"
          android:layout_width="match_parent"
          android:layout_height="match_parent" />
    

    Check this awesome article by Marc Knaup

    https://medium.com/widgetlabs-engineering/scrollable-nestedscrollviews-inside-recyclerview-ca65050d828a

    0 讨论(0)
  • 2020-11-22 04:30

    There are a lot of good answers. The key is that you must set nestedScrollingEnabled to false. As mentioned above you can do it in java code:

    mRecyclerView.setNestedScrollingEnabled(false);
    

    But also you have an opportunity to set the same property in xml code (android:nestedScrollingEnabled="false"):

     <android.support.v7.widget.RecyclerView
     android:id="@+id/recyclerview"
     android:nestedScrollingEnabled="false"
     android:layout_width="match_parent"
     android:layout_height="match_parent" />
    
    0 讨论(0)
  • 2020-11-22 04:30

    For my case the child of NestedScrollview is ConstraintLayout. It is not working as expected i replaced it to LinearLayout. Maybe it helps someone.

    <androidx.core.widget.NestedScrollView 
      android:id="@+id/nestedScrollView" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent">
    
      <LinearLayout 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:descendantFocusability="blocksDescendants">
    
        <androidx.recyclerview.widget.RecyclerView
          android:id="@+id/recyclerView"
          android:layout_width="0dp"
          android:layout_height="wrap_content"
          android:nestedScrollingEnabled="false"
          app:layout_constraintBottom_toTopOf="@+id/divider"
          app:layout_constraintEnd_toEndOf="parent"
          app:layout_constraintStart_toStartOf="parent"
          app:layout_constraintTop_toBottomOf="@+id/tinTitle"/>
    
      </LinearLayout>
    </androidx.core.widget.NestedScrollView>
    
    0 讨论(0)
  • 2020-11-22 04:33

    You can't use a recycler view within a nested scroll view. It's not intended to contain further scrollable views but it's because it's a child of a scrolling layout itself that you need the nested scrolling view. I had the same issue but in the end I moved my textview to be a headerview within the recyclerview, made the recyclerview a direct child of the coordinator layout and deleted the nested scroll view. Then all my problems were gone.

    0 讨论(0)
  • Here is the code that I'm using to avoid scrolling issues:

    mRecyclerView = (RecyclerView) view.findViewById(android.R.id.list);
    mRecyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
    mRecyclerView.getLayoutManager().setAutoMeasureEnabled(true);
    mRecyclerView.setNestedScrollingEnabled(false);
    mRecyclerView.setHasFixedSize(false);
    
    0 讨论(0)
提交回复
热议问题