滚动到recyclerView中第一个完全可见的项目
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了滚动到recyclerView中第一个完全可见的项目相关的知识,希望对你有一定的参考价值。
我正在尝试滚动到滚动时第一个完全可见的项目,我正在做以下事情:
recyclerView.addOnScrollListener(new OnScrollListener() {
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
}
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
LinearLayoutManager layoutManager = ((LinearLayoutManager) recyclerView
.getLayoutManager());
int position = layoutManager.findFirstCompletelyVisibleItemPosition();
if(position>0){
recyclerView.smoothScrollToPosition(position);
Log.e(TAG, "onScrolled: just called smooth scroll >> "+position );
}
}
});
我正在获得完全可见项目的正确位置,但滚动到它[尝试将其滚动到屏幕的可见部分的初始位置]不起作用。我尝试通过以下方式实现它:
1.
recyclerView.smoothScrollToPosition(position);
2.
layoutManager.smoothScrollToPosition(recyclerView, null, position);
他们没有改变!!我用谷歌搜索解决方案,但我找不到合适的解决方案。请建议我如何实现这一目标?
答案
使用SnapHelper
SnapHelper snapHelper = new GravitySnapHelper(Gravity.START);
snapHelper.attachToRecyclerView(startRecyclerView);
有关更多详细信息,请阅读本文:https://rubensousa.github.io/2016/08/recyclerviewsnap
以上是关于滚动到recyclerView中第一个完全可见的项目的主要内容,如果未能解决你的问题,请参考以下文章