如何使用clipToPadding = false为RecyclerView添加额外空间以防止过早回收

时间:2017-01-24 14:20:25

标签: android android-recyclerview

我有以下布局:

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:clipChildren="false"
    android:clipToPadding="false">

    <android.support.v7.widget.RecyclerView
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_alignParentBottom="true"
        android:layout_below="@+id/searchView"
        android:clipChildren="false"
        android:clipToPadding="false"
        android:scrollbars="vertical"
        app:layoutManager="android.support.v7.widget.LinearLayoutManager"/>

    <SearchView
        android:id="@+id/searchView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
</RelativeLayout>

这是SearchView下面的简单RecyclerView。我希望RecyclerView的视图在SearchView后面滚动,因此clipChildren和clipToPadding设置为false。 我的问题是,当它们仍然可见时,RecyclerView(正确地)回收它的适配器视图,因为它们不在RecyclerView的区域。有没有办法在RecyclerView中添加额外的空间,在这些空间中不会回收视图?

编辑,一个显示问题的GIF:

the behaviour

1 个答案:

答案 0 :(得分:1)

此方法可以帮助您setItemViewCacheSize(int size)。它设置在将其添加到可能共享的回收视图池之前要保留的屏幕外视图的数量。有关它的更多信息,您可以找到here