android – 如何知道RecyclerView/LinearLayoutManager是否滚动到顶部或底部?

目前,我使用以下代码来检查是否应启用SwipeRefreshLayout。

private void laySwipeToggle() {
    if (mRecyclerView.getChildCount() == 0 || mRecyclerView.getChildAt(0).getTop() == 0) {
        mLaySwipe.setEnabled(true);
    } else {
        mLaySwipe.setEnabled(false);
    }
}

但这里是问题。当它滚动到另一个项目的视图的边界mRecyclerView.getChildAt(0).getTop()也返回0。

有没有像RecyclerView.isScrolledToBottom()或RecyclerView.isScrolledToTop()?

编辑:(mRecyclerView.getChildAt(0).getTop()== 0&&&&&&&&&&&&&&&&&&&&&&&

最佳答案
解决方案在布局管理器中。

LinearLayoutManager layoutManager=new LinearLayoutManager(this);
//Add this to your Recyclerview
recyclerview.setLayoutManager(layoutManager);

//Tocheck if  recycler is on top
if(layoutManager.firstCompletelyVisibleItemPosition()==0){
//Its at top ..
}

//Tocheck if  recycler is on bottom
    if(layoutManager.lastCompletelyVisibleItemPosition()==data.size()-1){
    //Its at bottom ..
    }

编辑
如果您的项目大小大于屏幕,请使用以下方法检测顶部事件。

RecyclerView rc=(RecyclerView)view; 
LinearLayoutManager lm= (LinearLayoutManager) rc.getLayoutManager();
int pos = lm.findFirstVisibleItemPosition();
if(lm.findViewByPosition(pos).getTop()==0 && pos==0) 
return true; 

PS:实际上,如果你把RecyclerView直接放在SwipeRefreshview里,你不需要这样做

转载注明原文:android – 如何知道RecyclerView/LinearLayoutManager是否滚动到顶部或底部? - 代码日志