我在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;
}
}
});
虽然它正在按预期隐藏/显示列表视图,但转换并不顺畅。它是一种非常突然的轻弹效果。
任何人都可以帮助我如何顺利完成。
答案 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));
}
结果如下:
修改强>
这仅适用于RecyclerView
,但我注意到您需要ListView
,那么您应该查看此文件:RetractableToolbarUtil,
修改它以满足您的需求!