首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在回收器视图/列表视图onScroll上隐藏ActionBar

在回收器视图/列表视图onScroll上隐藏ActionBar
EN

Stack Overflow用户
提问于 2012-11-26 13:45:28
回答 5查看 51.3K关注 0票数 46

在我的应用程序中,我得到了一个activity,在顶部有某种类型的actionbar,在它下面有listview。我想要做的是在列表中向上滚动,这样它就会隐藏起来,然后,当列表向下滚动时,它应该会随着列表一起向下滚动,就像它刚刚越过屏幕的上边一样。如何实现此功能?

EN

回答 5

Stack Overflow用户

发布于 2014-10-15 07:02:26

您要查找的内容名为Quick Return pattern,它应用于Action Bar。Google IO 2014应用程序就是这样使用的。我在我的一个应用程序中使用它,你可以查看那个谷歌应用程序的source code,看看他们是如何获得它的。在BaseActivity类中,您可以获得所需的内容,阅读代码并提取特定的功能。享受编码!:)

票数 8
EN

Stack Overflow用户

发布于 2014-11-21 22:43:42

我确信这不是最好的解决方案。但我还没找到更好的。希望这会对你有所帮助。

代码语言:javascript
复制
    static boolean scroll_down;
    ...
    mRecyclerView.setOnScrollListener(new RecyclerView.OnScrollListener() {
        @Override
        public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
            super.onScrollStateChanged(recyclerView, newState);
                if (scroll_down) {
                    actionBar.hide();
                } else {
                    actionBar.show();
                }
        }

        @Override
        public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
            super.onScrolled(recyclerView, dx, dy);
            if (dy > 70) {
                //scroll down
                scroll_down = true;

            } else if (dy < -5) {
                //scroll up
                scroll_down = false;
            }
        }
    });
票数 3
EN

Stack Overflow用户

发布于 2015-05-17 16:18:18

我有一个想法,那是个好主意。

代码语言:javascript
复制
listView.setOnScrollListener(new OnScrollListener() {
    int mLastFirstVisibleItem = 0;

@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
      switch (scrollState) {
            case OnScrollListener.SCROLL_STATE_FLING:
                if (view.getId()==lv_searchresult_results.getId()){
                final int currentFirstVisibleItem=lv_searchresult_results.getFirstVisiblePosition();
                    if(currentFirstVisibleItem>mLastFirstVisibleItem){

                    ObjectAnimator.ofFloat(toolbar, "translationY", -toolbar.getHeight()).start();
                    else if(currentFirstVisibleItem<(mLastFirstVisibleItem)){

                    ObjectAnimator.ofFloat(toolbar, "translationY", 0).start();
                    }
                    mLastFirstVisibleItem= currentFirstVisibleItem;
                }

                if(lv_searchresult_results.getLastVisiblePosition() == myAdapter.getListMap().size()){ 
                    if(myAdapter.getListMap().size() < allRows&&!upLoading){

                    }
                }
                break;
            case OnScrollListener.SCROLL_STATE_IDLE:

                if (view.getFirstVisiblePosition()<=1){
                    ObjectAnimator.ofFloat(toolbar, "translationY", 0).start();

                }
                    if(lv_searchresult_results.getLastVisiblePosition() == myAdapter.getListMap().size()){
                    if(myAdapter.getListMap().size() < allRows&&!upLoading){


                    }
                }
                break;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13559275

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档