Android RecyclerView ItemDecoration分隔符在滚动之前不可见

时间:2018-12-19 14:09:15

标签: android android-recyclerview

我有一个简单的RecyclerView像这样:

  <android.support.v7.widget.RecyclerView
        android:id="@+id/tempRv"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
    </android.support.v7.widget.RecyclerView>

我在Fragment的onCreate()方法中添加分隔线:

    mRv = (RecyclerView) view.findViewById(R.id.tempRv);
    mRv.addItemDecoration(new DividerItemDecoration(getContext(), DividerItemDecoration.VERTICAL));

我还有一个简单的适配器,可以容纳物品。 问题是,直到我向上或向下滚动recyclerView时,分隔线才可见。 我尝试过:

  • 使用scrollTo(position)方法以编程方式滚动 最后一个项目和第一个项目在更新项目之后 适配器。
  • 将NestedScrollView添加为父级并滚动
    通过fullScroll(View.FOCUS_UP)以编程方式实现scrollView。

没有任何帮助。分隔线仅在物理滚动后可见。 奇怪的是,我还有另一个可以正常工作的RecyclerViews。

编辑

由于 Sharan Salian 的要求,在帖子中添加了项目布局,以便他可以重现此行为,所以我实际上试图自己重现此行为。项父级布局为:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:clickable="true"
    android:focusable="true"
    android:transitionGroup="true"
    android:background="?android:attr/selectableItemBackground"
    android:padding="16dp">
    ... 
    <TextView
            android:id="@+id/text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            />
    ...

</RelativeLayout>

我之前没有提到我将该项用作 SharedElement ,这就是为什么我向父标记添加属性android:transitionGroup="true"的原因。 删除此属性后, DividerItemDecoration 可以正常工作。一旦添加,分隔线在滚动之前是不可见的。 好像只是一个错误。

1 个答案:

答案 0 :(得分:0)

以编程方式收集“回收者视图”分隔符

mRv.addItemDecoration(new DividerItemDecoration(getContext(),LinearLayout.VERTICAL));

请尝试将以上代码片段替换为 LinearLayout.Vertical ,并告诉我。

您能显示正在适配器中充气的物品布局吗?

我认为您的项目布局具有android:orientation = "horizontal",并且您需要垂直分隔线。这只是一个假设,因为我从课题中获得了很少的见识。