自己写类似coordinatorlayout的实现效果,解决一些coordinatorlayout不能满足的要求

来源:互联网 发布:淘宝只能用花呗分期吗 编辑:程序博客网 时间:2024/06/10 07:35

我的文章是基于这位大哥的博客基础上修改的,他的博客写的很好。为了表示对他的感激和敬佩之情,我的把原地址传达给大家:

http://blog.csdn.net/oushangfeng123/article/details/47326511


我遇到的问题正如上面链接文章里说的第3条一样,我需要点击某个操作(不是滑动)让隐藏的AppBarLayout显示出来,折腾了很久发现使用官方的CoordinatorLayout

很难做到这一点(目前本人是没有研究出来,自定义Behavior也是需要某个控件移动才能让AppbarLayout跟着移动,而我这个场景是没有移动事件的)。


大家可以先下一下上面文章里最后给的代码,运行看看,效果已经很不错了。就是有一点还没有做到位,就是评论里人们说的 :


逻辑一样,可是,就是滚动的时候,不会隐藏。


我针对他的例子做了一点修改,修改如下


HomeSimpleFragment:

    mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {            @Override            public void onScrolled(RecyclerView recyclerView, int dx, int dy) {                super.onScrolled(recyclerView, dx, dy);                    element.setAppBarOffset(dy);                    EventBus.getDefault().post(element, "scroollTabLayout");            }        });

MainActivity:

    @Subscriber(tag = "scroollTabLayout")    private void scroollTabLayout(EventBusElement element) {        if(element.getAppBarOffset()>0){            if((mAppBarLayout.getScrollY()+element.getAppBarOffset())<=mAppBarLayout.getHeight()){                mAppBarLayout.scrollBy(0, element.getAppBarOffset());            }else{                mAppBarLayout.scrollBy(0,mTabLayoutHeight-mAppBarLayout.getScrollY());            }        }else if(element.getAppBarOffset()<0){            if((mAppBarLayout.getScrollY()+element.getAppBarOffset())>0){                mAppBarLayout.scrollBy(0, element.getAppBarOffset());            }            else{                mAppBarLayout.scrollBy(0,-mAppBarLayout.getScrollY());            }        }        Log.i("scrollYoffset", element.getAppBarOffset() + "");        Log.i("scrollY", mAppBarLayout.getScrollY() + "");        Log.i("scrollYheight", mAppBarLayout.getHeight() + "");    }


运行效果图如下:


源码下载地址:https://github.com/tomyZhou/CustomedCoordinatorLayout

阅读全文
0 0
原创粉丝点击