【问题标题】:Android recyclerview itemDecoration divider is invisible until scrollAndroid recyclerview itemDecoration 分隔符在滚动之前是不可见的
【发布时间】:2019-05-20 01:10:57
【问题描述】:

我有一个像这样的简单 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) 以编程方式滚动视图。

没有任何帮助。分隔线仅在物理滚动后可见。 奇怪的是,我还有另一个可以正常工作的 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 工作正常。一旦我添加它,分隔线在滚动之前是不可见的。 似乎只是一个错误。

【问题讨论】:

  • 问题是,当一些人试图帮助你时,你应该接受提到的答案并没有给出值得尊重的时间和努力。

标签: android android-recyclerview


【解决方案1】:

Recycler 以编程方式查看分隔符

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

试试上面的代码 sn-p 替换为 LinearLayout.Vertical 并告诉我。

您能否在适配器中显示您正在膨胀的项目布局?

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

【讨论】:

  • 我使用RelativeLayout 作为item 的父级,所以没有android:orientation 属性。顺便说一句,当我将项目布局包装到 CardView 中时,分隔符开始工作。之前试过LinearLayout.Vertical,可惜没用。
  • 你能用布局编辑你的帖子吗?我将复制该问题,然后检查一下?
  • 您的请求实际上有助于找到问题。我现在就编辑。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-25
  • 1970-01-01
  • 1970-01-01
  • 2021-04-11
  • 2019-05-18
  • 2012-04-23
相关资源
最近更新 更多