我的自定义布局中有一个回收站视图,我附加了一个LinearLayoutManager和我的自定义适配器。
this.recyclerList = (RecyclerView) findViewById(R.id.custom_number_picker_list);
this.layoutManager = new LinearLayoutManager(getContext());
this.recyclerList.setLayoutManager(layoutManager);
this.numberAdapter = new NumberAdapter();
this.recyclerList.setAdapter(numberAdapter);
我希望layoutManager滚动到firstCompletelyVisibleItem位置。 滚动到此位置的命令只是忽略!
但如果我通过
查询第一个可见(不完整)位置layoutManager.findFirstVisibleItemPosition();
,然后通过
设置此位置layoutManager.scrollToPosition(firstVisible);
然后它优雅地运作。但是如果我想滚动firstCompletelyVisibleItem, 如上所述,它被忽略了。
为什么?有什么东西我不见了吗?
答案 0 :(得分:0)
好的,现在我知道为什么会这样。我只是为了阅读文档而转储! 我通常会删除这个问题,但据我所见,有 毫无疑问,我为未来的读者提供了答案。
这是在文档中:
RecyclerView将滚动必要的最小金额来制作 目标位置可见。
这意味着,如果项目已经完全可见(如果您查询firstCompletelyVisibleItem,那么),则回收器视图将不会滚动并忽略该请求。
我认为实现这一目标的关键是使用带有offest方法的scrollToPosition。