【发布时间】:2016-01-04 10:44:41
【问题描述】:
我正在尝试创建一个屏幕,其中有一个具有固定数量的元素(4 个元素)和一个 FAB 按钮(右下位置)的 Recycler View。
当我向下滑动并到达 RecyclerView 的最后一个元素时,我想移除 FAB 按钮(翻译或显示效果)。
我还希望在到达终点后向上滚动时让 FAB 再次返回。
你能告诉我怎么做吗?
感谢您的帮助。
【问题讨论】:
我正在尝试创建一个屏幕,其中有一个具有固定数量的元素(4 个元素)和一个 FAB 按钮(右下位置)的 Recycler View。
当我向下滑动并到达 RecyclerView 的最后一个元素时,我想移除 FAB 按钮(翻译或显示效果)。
我还希望在到达终点后向上滚动时让 FAB 再次返回。
你能告诉我怎么做吗?
感谢您的帮助。
【问题讨论】:
将addOnScrollListener 添加到RecyclerView。
mRecyclerView.addOnScrollListener(new RecyclerView.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);
mOnScreenItems = mRecyclerView.getChildCount();
mTotalItemsInList = linearLayoutManager.getItemCount();
mFirstVisibleItem = linearLayoutManager.findFirstVisibleItemPosition();
if (mLoadingItems) {
if (mTotalItemsInList > mPreviousTotal+1) {
mLoadingItems = false;
mPreviousTotal = mTotalItemsInList;
}
}
if (!mLoadingItems && (mTotalItemsInList - mOnScreenItems) <= (mFirstVisibleItem + mVisibleThreshold)) {
// end reached
mLoadingItems = true;
}
}
});
【讨论】:
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 ..
fab.show();
}
//Tocheck if recycler is on bottom
if(layoutManager.lastCompletelyVisibleItemPosition()==data.size()-1){
//Its at bottom ..
fab.hide();
}
【讨论】: