LayoutManager不会滚动到firstCompletelyVisibleItem

时间:2016-04-14 19:40:44

标签: android android-layout android-recyclerview

我的自定义布局中有一个回收站视图,我附加了一个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, 如上所述,它被忽略了。

为什么?有什么东西我不见了吗?

1 个答案:

答案 0 :(得分:0)

好的,现在我知道为什么会这样。我只是为了阅读文档而转储! 我通常会删除这个问题,但据我所见,有 毫无疑问,我为未来的读者提供了答案。

这是在文档中:

  

RecyclerView将滚动必要的最小金额来制作     目标位置可见。

这意味着,如果项目已经完全可见(如果您查询firstCompletelyVisibleItem,那么),则回收器视图将不会滚动并忽略该请求。

我认为实现这一目标的关键是使用带有offest方法的scrollToPosition。