Android"更顺畅"滚动时隐藏工具栏

时间:2014-12-18 09:04:42

标签: android android-listview material-design android-toolbar onscrolllistener

我在Android中的ListFragment中使用工具栏,可以在滚动期间隐藏/显示它。我implement AbsListView.OnScrollListener并在里面使用此代码:

@Override
public void onScroll(AbsListView view, int firstVisibleItem,
                     int visibleItemCount, int totalItemCount) {
    // Leave this empty
}

/**
 * Method to detect if the scroll status changed
 *
 * @param listView
 * @param scrollState
 */
@Override
public void onScrollStateChanged(AbsListView listView, int scrollState) {
    if (!isTablet) {
        final int currentFirstVisibleItem = listView.getFirstVisiblePosition();

        if (currentFirstVisibleItem > mLastFirstVisibleItem) {
            ((ActionBarActivity) getActivity()).getSupportActionBar().hide();
        } else if (currentFirstVisibleItem < mLastFirstVisibleItem) {
            ((ActionBarActivity) getActivity()).getSupportActionBar().show();
        }
        mLastFirstVisibleItem = currentFirstVisibleItem;
    }
}

这样,当我向下滚动时,工具栏会被隐藏,如果我向上滚动则会显示。但动画非常“难”,我希望有一个更平滑的过渡。它应该如下所示(没有标签,只有工具栏):https://cms-images.idgesg.net/images/article/2014/10/playscroll-100509755-large.gif

1 个答案:

答案 0 :(得分:7)

我使用此库解决了问题:https://github.com/ksoichiro/Android-ObservableScrollView

我修改了ToolbarControlListView示例,现在我有了一个平滑的动画。因此,我还必须更改我的ListView的布局文件,它不包含FrameLayout作为父级。看一下GitHub中的例子!