我遇到以下情况:我有一个带填充的垂直RecyclerView,父布局clipChildren
和clipToPadding
设置为false,如下所示:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:clipChildren="false"
android:clipToPadding="false">
<android.support.v7.widget.RecyclerView
android:layout_margin="@dimen/padding_medium"
android:id="@+id/recyclerview_pager"
android:layout_width="match_parent"
android:layout_height="@dimen/holder_height_medium"/>
</LinearLayout>
此外,我附上一个相当不引人注目的LinearLayoutManager,如下所示:
MyLayoutManager layoutManager
= new MyLayoutManager(getContext(), LinearLayoutManager.HORIZONTAL, false);
recyclerViewPager.setLayoutManager(layoutManager);
适配器中的视图支架也非常简单:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingTop="@dimen/layout_padding_small"
android:paddingRight="@dimen/layout_padding_small"
android:paddingLeft="@dimen/layout_padding_small">
.....
</LinearLayout>
现在我得到以下行为:当我滚动到一个视图时,应该在回收器视图外部的填充区域中可见的项目尚未呈现。只有当我开始略微滚动时,才会显示项目并根据需要显示在填充区域中:
如何告知Recyclerview在相邻项目实际即将进入视图之前对其进行布局?在LayoutManager
上使用项目预取配置没有帮助。我搜索了LayoutManager
的方法,并没有找到一个好方法来覆盖exteding。
在此先感谢您的帮助,如果有任何问题仍然不清楚,请与我联系。
答案 0 :(得分:1)
您需要将clipToPadding=false
设置为RecyclerView
,不要设置为父LinearLayout
,您也可以删除clipChildren
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<android.support.v7.widget.RecyclerView
android:layout_margin="@dimen/padding_medium"
android:id="@+id/recyclerview_pager"
android:layout_width="match_parent"
android:clipToPadding="false"
android:paddingEnd="40dp"
android:paddingLeft="40dp"
android:paddingRight="40dp"
android:paddingStart="40dp"
android:layout_height="@dimen/holder_height_medium"/>
</LinearLayout>
<强>更新强> 我已经在recyclerview中添加了填充以使下一个位置可见。