4

我这样设置我的 recyclerView 的 layoutManager:

recyclerView.layoutManager = LinearLayoutManager(context, HORIZONTAL, true)

最后一个参数设置为reverseLayouttrue这意味着它将从右到左加载。我需要这个,因为我实现了一种日历,其中最后一个日期是当前日期,但您可以无限滚动到过去。

问题是当我在我的适配器中调用notifyItemChangednotifyDataSetChanged列表向右滚动几个像素时。这不会发生在reverseLayout=false.

它也只发生在 RecyclerView 的大小为MATCH_PARENT时,当我手动将其设置为任何 dp 时,问题就消失了。

任何想法会发生什么以及如何应对?

4

2 回答 2

2

也许为时已晚,但无论如何,我要把它留在这里。在 recyclerview 上使用具有匹配约束的约束布局(具有水平约束的 0dp)为我解决了这个问题。

于 2019-04-25T11:11:55.010 回答
0

以编程方式设置 RecyclerView 尺寸对我有用。

在科特林 -

constraintLayout.doOnLayout {
    recyclerview.layoutParams.height = bottomLayout.top - appBarLayout.bottom
}

xml -

<androidx.recyclerview.widget.RecyclerView
    android:id="@+id/recyclerView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintBottom_toTopOf="@id/bottomLayout" />

我想要在bottomLayout 和appBarLayout 和constraintLayout 之间的recyclerView 是根布局。

于 2020-09-24T20:10:28.463 回答