0

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

我的布局设置如下

- <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())

任何帮助表示赞赏。谢谢

4

2 回答 2

2

看起来在你的情况下你没有足够的物品。

你不能让recyclerView滚动低于最后一个项目所以要么你通过扩展它来实现你自己的recyclerView,获得添加滚动量,当到达最后一个项目时,你将添加recyclerView的translationY。

或者你可以添加一些虚拟项目。所以它们可以是视图,具有正常项目的宽度和高度。应该这样做。

于 2019-02-14T18:50:50.237 回答
0

你试过layoutManager的scrollToPositionWithOffset功能吗:

thirdItem.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            LinearLayoutManager layoutManager = (LinearLayoutManager) mRecyclerView
                    .getLayoutManager();
            layoutManager.scrollToPositionWithOffset(0, 0);
        }
});
于 2019-02-14T18:12:28.460 回答