最近自己做了一个app,想要在listview中上滑的时候隐藏ActionBar,然后下滑的时候再显示出来。
查了资料后,大概明白了,主要实现方法是:每次滑动时记录当前屏的第一个可见项目的位置(int)oldVisibleItem,然后下次滑动的时候用oldVisibleItem和现在的第一个可见项的位置firstVisibleItem作比较,如果oldVisibleItem较大,可以得出是上滑操作,反之是下滑操作。。
效果:
最终实现如下:
lv.setOnScrollListener(new AbsListView.OnScrollListener() {
private int oldVisibleItem = 0;
private boolean touchFlg = true;
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
touchFlg = true;
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
if (firstVisibleItem > oldVisibleItem && touchFlg) {
// 向上滑动
mListener.onListScroll(true);
touchFlg = false;
}
if (oldVisibleItem > firstVisibleItem && touchFlg) {
// 向下滑动
mListener.onListScroll(false);
touchFlg = false;
}
oldVisibleItem = firstVisibleItem;
}
});
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。