最近自己做了一个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;
    }
});


Maxiye
648 声望19 粉丝