【问题标题】:recyclerview items outside view bound invisiblerecyclerview 视图外的项目绑定不可见
【发布时间】:2018-04-24 10:57:43
【问题描述】:

我有以下情况:我有一个带有填充的垂直 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>

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

我如何告诉 recyclerview 在相邻项目真正进入视野之前对其进行布局?在LayoutManager 上使用项目预取配置没有帮助。我已经搜索了LayoutManager 的方法,并没有找到一个很好的方法来覆盖扩展。

提前感谢您的帮助,如果还有什么不清楚的地方请告诉我。

【问题讨论】:

  • 您想在滚动前显示下一项吗?
  • 是的,基本上这就是我想要实现的目标
  • 好的,你可能会尝试滚动到位置0,它会使recyclerview重绘孩子,

标签: android android-recyclerview linearlayoutmanager


【解决方案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 中添加了填充,以使下一项位置可见。

【讨论】:

  • 这根本不起作用,它只会将当前工作的剪辑中断为填充行为,而不会在填充区域中显示任何内容。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多