具有RecyclerView和其他视图的BottomSheet

时间:2019-11-27 10:30:12

标签: android android-recyclerview android-coordinatorlayout bottom-sheet

我有一个带有BottomSheet的CoordinatorLayout。如果Bottomsheet仅具有RecyclerView,则一切正常。我试图在RecyclerView的顶部添加一些Textview和按钮,但是当recyclerview到达顶部高度时,它将滚动到另一个视图的下方。我也希望其他观点也可以。 如果BottomSheet仅包含其他视图(没有Recyclerview)也可以正常工作。 当我将RecyclerView和其他视图元素(Button,TextView)组合在一起时,滚动效果不是预期的。

我想将Recyclerview上方的视图设置为列表的第一项,但这会增加适配器的复杂性。

   <LinearLayout
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:orientation="vertical"
      app:behavior_hideable="false"
      app:behavior_peekHeight="80dp"
      app:layout_behavior="@string/bottom_sheet_behavior">

      <Button
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:text="Button 1"/>
      <TextView
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:text="Text 2"/>
      <TextView
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:text="Text 3"/>

      <android.support.v7.widget.RecyclerView
        android:id="@+id/recyclerView"
        android:background="@android:color/white"
        android:scrollbars="vertical"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" 
        android:clipToPadding="true"/>
   </LinearLayout>

2 个答案:

答案 0 :(得分:0)

将您的LinearLayout放在NestedScrollView中:

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


        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical">
             ...
             ... // Texview, ImageView etc.
             ...
            <android.support.v7.widget.RecyclerView
                android:id="@+id/recyclerView"
                android:layout_width="match_parent"
                android:layout_height="wrap_content" />

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

如果滚动尚未修复,则必须在设置适配器后执行以下操作: ViewCompat.setNestedScrollingEnabled(recyclerView, false);

现在,希望您的recyclerview能顺利滚动!

答案 1 :(得分:0)

使用NestedScrollView作为LinearLayout的父级。 它将解决您的问题。