当我向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);
答案 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);
}
}
});