【问题标题】:How to scroll last item on RecyclerView to the top position?如何将 RecyclerView 上的最后一项滚动到顶部位置?
【发布时间】:2017-06-16 18:03:00
【问题描述】:

我事先道歉,我没有任何代码示例,因为我完全不知道如何解决我的问题。我想知道,如何将列表的最后一项滚动到回收站视图的顶部?

默认情况下,如果所有项目都显示,并且不需要滚动,那么您将无法再滚动查看更多项目。与此的冲突是我正在根据最顶部的项目更新单独视图上的信息。

对此有什么想法吗?我唯一能想到的就是添加任意的假空数据,以便我可以继续滚动。提前致谢

更新:除了虚拟数据之外,最好的替代解决方案是向 RecyclerView 添加填充。如果我添加 paddingBottom,在滚动到最后一项之前,您不会看到空白区域。但是填充必须精确才能将最后一个项目强制到顶部位置。所以即使这是有缺陷的。

<android.support.v7.widget.RecyclerView
    android:clipToPadding="false"
    android:paddingBottom="300dp"
    android:id="@+id/rv_data"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:divider="@null"
    android:scrollingCache="false"/>

【问题讨论】:

  • 也许一些代码会有所帮助!
  • 无事可做。我不是在询问如何设置回收站视图。我在问是否有一个属性可以执行我所描述的操作,例如 LayoutManager 中的 setStackFromEnd 或 recyclerview 级别的 setNestedScrolling。任何已知会执行此操作的属性,或者我是否必须创建自定义 RecyclerView 或想出一些技巧。这确实是个问题。
  • 也许这样://从顶部滚动项目 2 到 20 像素 linearLayoutManager.scrollToPositionWithOffset(2, 20);
  • 是的,但这是以前的。这不适用于之后。在用户滚动到列表底部之后。这会将您带到一个特定的位置。

标签: android android-recyclerview


【解决方案1】:

好的,我能够让它工作。首先我在onBindViewHolder中测量适配器中项目的大小

holder.llWrapper.measure(0,0);

我从中获取MeasuredHeight() 并将其从我的适配器传回我的片段。然后我测量回收站的视图高度。我减去 recyclerview 和 item 的高度,余数是我需要将底部设置为 recyclerview 的填充量

rv.setPadding(0,0,0,padding);

这是我能想到的最好的。干杯!

【讨论】:

  • 我们有没有比这更好的解决方案? recyclerview 中必须有一些我认为可以覆盖的代码
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-17
相关资源
最近更新 更多