一、ListView
1.定义
/*** 列表视图*/private ListView lvPhotoList;/*** 滑动到顶部按钮*/private FloatingActionButton fabScrollTop;
2.监听器
/*** 列表监听是否显示 滑动到顶部按钮*/private final AbsListView.OnScrollListener lvPhotoListScrollListener = new AbsListView.OnScrollListener() {@Overridepublic void onScrollStateChanged(AbsListView view, int scrollState) {// 滚动条滚动停止时if (scrollState == SCROLL_STATE_IDLE) {if (lvPhotoList.getFirstVisiblePosition() == 0) {if (fabScrollTop.getVisibility() == View.VISIBLE) {fabScrollTop.setVisibility(View.INVISIBLE); // 设置滑动顶部按钮不可见}} else {if (fabScrollTop.getVisibility() == View.INVISIBLE) {fabScrollTop.setVisibility(View.VISIBLE); // 设置滑动顶部按钮可见}}}}@Overridepublic void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {}};/*** 滑动到顶部*/private final View.OnClickListener fabScrollTopListener = new View.OnClickListener() {@Overridepublic void onClick(View v) {lvPhotoList.smoothScrollToPosition(0);}};
3.设置监听器
lvPhotoList = root.findViewById(R.id.XXXXX);lvPhotoList.setOnScrollListener(lvPhotoListScrollListener);fabScrollTop = root.findViewById(R.id.XXXXX);fabScrollTop.setVisibility(View.INVISIBLE);fabScrollTop.setOnClickListener(fabScrollTopListener);
二、RecyclerView
1.定义
/*** 滑动视图*/private RecyclerView rvPhotoList;/*** 上划顶部按钮*/private FloatingActionButton fabScrollTop;
2.监听器
/*** 列表监听是否显示 滑动到顶部按钮*/private final RecyclerView.OnScrollListener rvPhotoListScrollListener = new RecyclerView.OnScrollListener() {@Overridepublic void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {if (newState == SCROLL_STATE_IDLE) {// 判断第一条item是否可见,如果不可见则显示回顶部按钮if (recyclerView.getLayoutManager().findViewByPosition(0) != null) {if (fabScrollTop.getVisibility() == View.VISIBLE) {fabScrollTop.setVisibility(View.INVISIBLE); // 设置滑动顶部按钮不可见}} else {if (fabScrollTop.getVisibility() == View.INVISIBLE) {fabScrollTop.setVisibility(View.VISIBLE); // 设置滑动顶部按钮可见}}}}};/*** 滑动到顶部*/private final View.OnClickListener fabScrollTopListener = new View.OnClickListener() {@Overridepublic void onClick(View v) {rvPhotoList.smoothScrollToPosition(0);}};
3.设置监听器
rvPhotoList = root.findViewById(R.id.XXXXX);rvPhotoList.addOnScrollListener(rvPhotoListScrollListener);fabScrollTop = root.findViewById(R.id.XXXXX);fabScrollTop.setVisibility(View.INVISIBLE);fabScrollTop.setOnClickListener(fabScrollTopListener);
如果觉得《Android | ListView RecyclerView 实现一键回到顶部》对你有帮助,请点赞、收藏,并留下你的观点哦!