recyclerview项目外部视图绑定隐形

时间:2018-04-20 08:51:12

标签: android android-recyclerview linearlayoutmanager

我遇到以下情况:我有一个带填充的垂直RecyclerView,父布局clipChildrenclipToPadding设置为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>

现在我得到以下行为:当我滚动到一个视图时,应该在回收器视图外部的填充区域中可见的项目尚未呈现。只有当我开始略微滚动时,才会显示项目并根据需要显示在填充区域中:

enter image description here enter image description here

如何告知Recyclerview在相邻项目实际即将进入视图之前对其进行布局?在LayoutManager上使用项目预取配置没有帮助。我搜索了LayoutManager的方法,并没有找到一个好方法来覆盖exteding。

在此先感谢您的帮助,如果有任何问题仍然不清楚,请与我联系。

1 个答案:

答案 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中添加了填充以使下一个位置可见。