RecyclerView-上下滚动一个屏幕(不基于适配器位置)

时间:2020-01-10 10:59:53

标签: android android-recyclerview

具有一个(高度)不同高度的项目的RecyclerView,如何向下(或向上)滚动1个屏幕? 因此,向下滚动1个屏幕后,显示的数据恰好位于当前屏幕上的数据下方。

举一个极端的例子:当我有一个非常大的第一数据项并且y滚动位置为0时,向下滚动1屏幕将意味着在该情况下显示第一项数据的下一部分/剩余部分。

有很多方法可能会有所帮助。

  • 使用适配器位置。当(适配器中的)项目很大时,这将不起作用。
  • 使用百分比。例如,对ScrollOffset,ScrollExtent和ScrollRange使用以下方法。好的,如何使用该百分比?百分比是否基于数据项的平均大小/高度?请参阅下面的列表。
  • 使用scrollTo(0,y)。如何找到下一个“ y”?

ScrollOffset,Extent和Range的方法是:

int offset = recyclerView.computeVerticalScrollOffset();
int extent = recyclerView.computeVerticalScrollExtent();
int range = recyclerView.computeVerticalScrollRange();
float percentage = (100.0f * offset / (float)(range - extent));

那么,有没有一种方法可以向下滚动1个屏幕,而与数据(行)项的大小无关?

1 个答案:

答案 0 :(得分:1)

按视图的高度滚动就可以了,不是吗?在滚动视图内的recyclerview上进行了快速测试。

view.post(() -> view.scrollBy(0, view.getHeight()));

相关问题