如何监听CollapsingToolbarLayout的展开与折叠
来源:互联网 发布:淘宝如何让宝贝排名靠前 编辑:程序博客网 时间:2024/05/18 09:12
原文地址:原文(泡在网上的日子)
使用官方提供的 AppBarLayout.OnOffsetChangedListener就能实现了,不过要封装一下才好用。
自定义一个继承了 AppBarLayout.OnOffsetChangedListener的类,这里命名为AppBarStateChangeListener:
public abstract class AppBarStateChangeListener implements AppBarLayout.OnOffsetChangedListener { public enum State { EXPANDED, COLLAPSED, IDLE } private State mCurrentState = State.IDLE; @Override public final void onOffsetChanged(AppBarLayout appBarLayout, int i) { if (i == 0) { if (mCurrentState != State.EXPANDED) { onStateChanged(appBarLayout, State.EXPANDED); } mCurrentState = State.EXPANDED; } else if (Math.abs(i) >= appBarLayout.getTotalScrollRange()) { if (mCurrentState != State.COLLAPSED) { onStateChanged(appBarLayout, State.COLLAPSED); } mCurrentState = State.COLLAPSED; } else { if (mCurrentState != State.IDLE) { onStateChanged(appBarLayout, State.IDLE); } mCurrentState = State.IDLE; } } public abstract void onStateChanged(AppBarLayout appBarLayout, State state);}
然后这样使用它:
mAppBarLayout.addOnOffsetChangedListener(new AppBarStateChangeListener() { @Override public void onStateChanged(AppBarLayout appBarLayout, State state) { Log.d("STATE", state.name()); if( state == State.EXPANDED ) { //展开状态 }else if(state == State.COLLAPSED){ //折叠状态 }else { //中间状态 } } });
可能这并不是什么新鲜知识,但是我是第一次有这样的需求。很久以前开源了XRecyclerView,网友使用过程中提了很多issues,第一次体会到挖坑容易填坑难。上周开始我决定把这些issues一个个的解决,提高稳定性,并增加一些功能。此次就是为了解决issues/85 。XRecyclerView修复差不多之后,我做一个文档,放在网站首页。
1 0
- 如何监听CollapsingToolbarLayout的展开与折叠
- 如何监听CollapsingToolbarLayout的展开与折叠
- 如何监听CollapsingToolbarLayout的展开与折叠
- CollapsingToolbarLayout展开与收回监听
- CollapsingToolbarLayout的使用及折叠事件监听
- UITableView的折叠与展开
- 关于CoordinatorLayout包含CollapsingToolbarLayout和NestedScrollView展开与折叠相关属性
- 脚本控制Select的展开与折叠
- Axure折叠与展开效果的实现
- jquery内容的展开与折叠
- jquery实现内容的折叠与展开
- 使用CollapsingToolbarLayout实现可展开与收缩的导航栏
- 展开与折叠菜单栏
- UITableViewCell 折叠与展开
- ASPxNavBar的折叠展开
- CoordinatorLayout:CollapsingToolbarLayout折叠效果的布局容器
- CollapsingToolbarLayout使用(可以折叠的Toolbar)
- 层次结构与展开/折叠
- 浅谈软件项目实施
- 排序4:多路归并排序之预备:胜者树与败者树
- LeetCode-17. Letter Combinations of a Phone Number
- 新导入的java项目报错解决办法
- 卡特兰数介绍及其应用
- 如何监听CollapsingToolbarLayout的展开与折叠
- 面试常见查询语句(能掌握以下几个例子就基本可以了)
- CVS,SVN,Git
- 内存池,进程池,线程池
- Linux命令--文件搜索命令find
- caffe-cuda测试
- 10分钟精通SharePoint-发展历程
- Codeforces Round #396 (Div. 2)D. Mahmoud and a Dictionary(带权并查集)
- POJ1699【AC自动机+状压DP_感言】