一、ListView
1.定义
/**
* 列表视图
*/
private ListView lvPhotoList;
/**
* 滑动到顶部按钮
*/
private FloatingActionButton fabScrollTop;
2.监听器
/**
* 列表监听是否显示 滑动到顶部按钮
*/
private final AbsListView.OnScrollListener lvPhotoListScrollListener = new AbsListView.OnScrollListener() {
@Override
public 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); // 设置滑动顶部按钮可见
}
}
}
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
}
};
/**
* 滑动到顶部
*/
private final View.OnClickListener fabScrollTopListener = new View.OnClickListener() {
@Override
public 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() {
@Override
public 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() {
@Override
public 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);