如何在列表视图滚动中使工具栏隐藏/显示平滑。机器人

时间:2016-01-22 15:02:57

标签: android listview

我在listview向下/向上滚动时使用此代码显示/隐藏工具栏。

brandListView.setOnScrollListener(new AbsListView.OnScrollListener() {
    int mLastFirstVisibleItem = 0;

    @Override
    public void onScrollStateChanged(AbsListView view, int scrollState) {
    }

    @Override
    public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
        if (view.getId() == brandListView.getId()) {
            final int currentFirstVisibleItem = brandListView.getFirstVisiblePosition();

            if (currentFirstVisibleItem > mLastFirstVisibleItem) {
                // getSherlockActivity().getSupportActionBar().hide();
                ((AppCompatActivity)getActivity()).getSupportActionBar().hide();
            } else if (currentFirstVisibleItem < mLastFirstVisibleItem) {
                // getSherlockActivity().getSupportActionBar().show();
                ((AppCompatActivity)getActivity()).getSupportActionBar().show();
            }

            mLastFirstVisibleItem = currentFirstVisibleItem;
        }
    }
});

虽然它正在按预期隐藏/显示列表视图,但转换并不顺畅。它是一种非常突然的轻弹效果。

任何人都可以帮助我如何顺利完成。

1 个答案:

答案 0 :(得分:0)

试试我的图书馆:RetractableToolbar

您必须导入build.gradle

compile 'it.michelelacorte.retractabletoolbar:library:1.0.0'

比在您的Activity类中:

RetractableToolbarUtil.ShowHideToolbarOnScrollingListener showHideToolbarListener;
recyclerView.addOnScrollListener(showHideToolbarListener = new RetractableToolbarUtil.ShowHideToolbarOnScrollingListener(toolbar));

if (savedInstanceState != null) {
            showHideToolbarListener.onRestoreInstanceState((RetractableToolbarUtil.ShowHideToolbarOnScrollingListener.State) savedInstanceState
                    .getParcelable(RetractableToolbarUtil.ShowHideToolbarOnScrollingListener.SHOW_HIDE_TOOLBAR_LISTENER_STATE));
}

结果如下:

enter image description here

修改

这仅适用于RecyclerView,但我注意到您需要ListView,那么您应该查看此文件:RetractableToolbarUtil, 修改它以满足您的需求!