NestedScrollView中的Recyclerview - 滚动到底部

时间:2017-12-13 15:28:33

标签: android android-recyclerview android-scrollview

我在RecyclerView内有NestedScrollView

        <android.support.v4.widget.NestedScrollView
            android:layout_width="match_parent"
            android:layout_height="@dimen/_100sdp">
            <android.support.v7.widget.RecyclerView
                android:id="@+id/recycler_view_chat"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:minHeight="@dimen/_100sdp"

                android:layout_marginLeft="@dimen/_30sdp"
                android:layout_marginRight="@dimen/_30sdp"
                android:background="@color/bright_grey"

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

我的RecyclerView正在填充onCreate()

中的项目

在设备上,您会看到最顶部的RecyclerView的第一项必须向下滚动NestedScrollView才能看到最后一项。

由于我的项目是按发送时间排序的聊天消息,因此我需要将NestedScrollView一直向下滚动,以便用户首先看到最新的聊天消息而无需首先滚动。

有关于此的任何想法吗?

1 个答案:

答案 0 :(得分:2)

鉴于您的RecyclerViewNestedScrollView的唯一孩子,最好完全删除NestedScrollView,而是将固定高度应用于RecyclerView 。像这样:

<android.support.v7.widget.RecyclerView
    android:id="@+id/recycler_view_chat"
    android:layout_width="match_parent"
    android:layout_height="@dimen/_100sdp"
    android:layout_marginLeft="@dimen/_30sdp"
    android:layout_marginRight="@dimen/_30sdp"
    android:background="@color/bright_grey" />

这样做可以让RecyclerView本身管理滚动,而不是父滚动视图。 允许您利用LinearLayoutManager的属性来实现您想要的目标。

反向布局 - 设置此项将“反转”您的列表;适配器中的第一项将显示在列表的底部,RecyclerView的默认滚动位置将一直滚动到底部。

https://developer.android.com/reference/android/support/v7/widget/LinearLayoutManager.html#setReverseLayout(boolean)

LinearLayoutManager lm = new LinearLayoutManager(this);
lm.setReverseLayout(true);