//添加滑动监听
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
RecyclerView.LayoutManager manager = recyclerView.getLayoutManager();//获取LayoutManager
if (manager != null && manager instanceof LinearLayoutManager){
//第一个可见的位置
int firstPosition = ((LinearLayoutManager) manager).findFirstVisibleItemPosition();
//如果 dx>0 则表示 右滑 ,dx<0 表示 左滑,dy <0 表示 上滑, dy>0 表示下滑
if (dy<0){
//上滑监听
topBar.setVisibility(firstPosition>1 ? View.VISIBLE : View.GONE);
}else{
//下滑监听
topBar.setVisibility(firstPosition==0 ? View.GONE : View.VISIBLE);
}
}
}
});
其他方法:
//此方法常用作判断是否能下拉刷新,来解决滑动冲突
int findFirstCompletelyVisibleItemPosition = ((LinearLayoutManager)manager).findFirstCompletelyVisibleItemPosition();
//最后一个完整的可见的item位置
int findLastCompletelyVisibleItemPosition = ((LinearLayoutManager)manager).findLastCompletelyVisibleItemPosition();
//最后一个可见的位置
int findLastVisibleItemPosition = ((LinearLayoutManager)manager).findLastVisibleItemPosition();