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