gpt4 book ai didi

android - 如何知道 RecyclerView/LinearLayoutManager 是滚动到顶部还是底部?

转载 作者:IT老高 更新时间:2023-10-28 13:13:17 25 4
gpt4 key购买 nike

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

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

但这就是问题所在。当它滚动到另一个项目的 View 边界时 mRecyclerView.getChildAt(0).getTop() 也返回 0。

The problem

有类似 RecyclerView.isScrolledToBottom()RecyclerView.isScrolledToTop() 的东西吗?

编辑:(mRecyclerView.getChildAt(0).getTop() == 0 && linearLayoutManager.findFirstVisibleItemPosition() == 0) 类似于 RecyclerView.isScrolledToTop() code>,但是 RecyclerView.isScrolledToBottom() 呢?

最佳答案

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

LinearLayoutManager layoutManager = new LinearLayoutManager(this);

// Add this to your Recycler view
recyclerView.setLayoutManager(layoutManager);

// To check if at the top of recycler view
if(layoutManager.firstCompletelyVisibleItemPosition()==0){
// Its at top
}

// To check if at the bottom of recycler view
if(layoutManager.lastCompletelyVisibleItemPosition()==data.size()-1){
// Its at bottom
}

编辑

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

RecyclerView recyclerView = (RecyclerView) view;
LinearLayoutManager linearLayoutManager = (LinearLayoutManager) recyclerView.getLayoutManager();

int pos = linearLayoutManager.findFirstVisibleItemPosition();

if(linearLayoutManager.findViewByPosition(pos).getTop()==0 && pos==0){
return true;
}

PS:实际上,如果您将 RecyclerView 直接放在 SwipeRefreshview 内,则不需要这样做

关于android - 如何知道 RecyclerView/LinearLayoutManager 是滚动到顶部还是底部?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27841740/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com