将recyclerview滚动到滚动视图的顶部

时间:2019-02-14 17:54:14

标签: android android-layout android-recyclerview recyclerview-layout nestedrecyclerview

当用户单击某个项目时,我正在尝试将回收者视图项目滚动到屏幕顶部。

我的布局设置如下

- <FrameLayout>
--   <ScrollView>
---     <LinearLayout /> // static content
---     <RecyclerView /> // dynamic content
---     <LinearLayout /> // static content
--   </ScrollView>
-- </FrameLayout>

我想要实现的是当我单击recyclerview的一项时。它应该向上滚动到屏幕顶部。

到目前为止,我一直在尝试追随,但没有运气。

-> 
  // use recycler view's layout manager to scroll.
  recyclerView.layoutManager.scrollToPositionWithOffset(position)

->
 // use smooth scroll to scroll
 recyclerView.smoothScrollToPosition(ItemPos)

->
  // use main scroll view to scroll on the screen. This kind of works but does not move item to top of the page.
  val y = recyclerView.y + recyclerView.getChildAt(position).y
  activity.binding.mainScrollview?.smoothScrollTo(0, y.toInt())

感谢您的帮助。谢谢

2 个答案:

答案 0 :(得分:2)

在您的情况下,您似乎没有足够的物品。

您不能使recyclerView滚动比最后一个项目低,因此可以通过扩展它来实现自己的recyclerView实现,获取添加滚动量,当到达最后一个项目时,您将累加recyclerView的translationY

或者您可以添加一些虚拟项目,因此可以将它们作为具有常规项目的宽度和高度的View。

答案 1 :(得分:0)

您是否尝试过layoutManager的 source | dest | buyOrSell | qty A B buy 2 A C buy 1 函数:

scrollToPositionWithOffset