1、添加懸浮按鈕
2、實例化
returnTop = view.findViewById(R.id.fab);
3、recycleView添加滑動事件
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(@NonNull final RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
//獲得recyclerView的線性布局管理器
LinearLayoutManager manager = (LinearLayoutManager) recyclerView.getLayoutManager();
//獲取到第一個item的顯示的下標 不等於0表示第一個item處於不可見狀態 說明列表沒有滑動到頂部 顯示回到頂部按鈕
int firstVisibleItemPosition = manager.findFirstVisibleItemPosition();
// 當不滾動時
if (newState == RecyclerView.SCROLL_STATE_IDLE) {
// 判斷是否滾動超過一屏
if (firstVisibleItemPosition == 0) {
returnTop.hide();
} else {
//顯示回到頂部按鈕
returnTop.show();
returnTop.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
recyclerView.scrollToPosition(0);
}
});
}//獲取RecyclerView滑動時候的狀態
}
// else if (newState == RecyclerView.SCROLL_STATE_DRAGGING) {//拖動中
// returnTop.hide();
// }
}
});
RecyclerView有三個滑動狀態:
- 當前的recycleView不滑動(滑動已經停止時) public static final int SCROLL_STATE_IDLE = 0;
- 當前的recycleView被拖動滑動 public static final int SCROLL_STATE_DRAGGING = 1;
- 當前的recycleView在滾動到某個位置的動畫過程,但沒有被觸摸滾動.調用 scrollToPosition(int) 應該會觸發這個狀態 public static final int SCROLL_STATE_SETTLING = 2;
文章:https://blog.csdn.net/weixin_34365417/article/details/93165895