如何滚动到RecycleView的顶部?

时间:2016-06-29 15:44:56

标签: android android-recyclerview android-scrollview

当我向RecycleView添加新数据时,如果我在视图的顶部,那么我会向下滚动一点点。如何正确滚动到RecycleView的顶部?我试过了:

boolean isAtTop = !mRecyclerView.canScrollVertically(-1);
mRecyclerAdapter.updateMessageItemDataList(mMessageItems);
if (isAtTop)
    mRecyclerView.scrollToPosition(0);

但这没有任何作用(我仍然向下滚动一点点)。我搜索了堆栈溢出并找到了以下内容,但仍然没有做任何事情:

boolean isAtTop = !mRecyclerView.canScrollVertically(-1);
mRecyclerAdapter.updateMessageItemDataList(mMessageItems);
if (isAtTop)
    ((LinearLayoutManager)mRecyclerView.getLayoutManager()).scrollToPositionWithOffset(0, 0);

总是正确识别isAtTop,但我尝试向上滚动到顶部永远不会起作用。有没有人遇到类似的问题。

这真的很奇怪,因为我可以使用

正确滚动到视图的底部
mRecyclerView.scrollToPosition(mRecyclerAdapter.getItemCount() - 1);

2 个答案:

答案 0 :(得分:0)

也许这会有用(这适用于我的情况):

final LinearLayoutManager mLinearLayoutManager = new LinearLayoutManager(this);
mLinearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
myRecycler.setLayoutManager(mLinearLayoutManager);
myRecycler.setHasFixedSize(true);

...
anyButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        if (mLinearLayoutManager != null) {
             myRecycler.scrollToPositionWithOffset(0, 0);
        }
    }
});

答案 1 :(得分:0)

在我的案例中工作#salamtempe

ActionButon.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        if (new LinearLayoutManager(getActivity()) != null) {
            mRecyclerView.smoothScrollToPosition(0);
        }
    }
});