为recyclerview添加悬浮view
来源:互联网 发布:ubuntu安装类型选哪个 编辑:程序博客网 时间:2024/05/30 23:29
recyclerview中列表一般使用LinearLayoutManage,其中LinearLayoutManage有方法findviewbyposition(position);和findFirstVisibleItemPosition,他可以分别用来获取你指定position的view和第一个显示的item的位置.这是前提.
下面我们来说说思想:
1.我们建立一个布局文件,里边放recyclerview然后上边盖一个header.
2.我们的item布局中在正常需要的布局上添加一个header.和activity的header布局一样就行,可以建一个header布局直接include.
3.正常写好recyclerview直到能正常显示出来
4.写recyclerview.addOnScrollListener,在onScrolled中判断.下面我们看代码
mRecyclerList.addOnScrollListener(new RecyclerView.OnScrollListener() { @Override public void onScrollStateChanged(RecyclerView recyclerView, int newState) { super.onScrollStateChanged(recyclerView, newState); //headerBarHeight 用suspension_bar来赋值获取到header的高度 headerBarHeight = suspension_bar.getHeight(); } @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { super.onScrolled(recyclerView, dx, dy); //获取到当前显示第一个view的position的下一个view View view = linearLayoutManager.findViewByPosition(currentPosition + 1); if(view != null){ //判断如果gettop小于header的高度那么就设置header的Y偏移量 if(view.getTop() <= headerBarHeight){ suspension_bar.setY(-(headerBarHeight - view.getTop())); }else{ //不然就设置偏移量为0,正常显示header suspension_bar.setY(0); } } //currentPosition 为当前显示position if(currentPosition != linearLayoutManager.findFirstVisibleItemPosition()){ currentPosition = linearLayoutManager.findFirstVisibleItemPosition(); suspension_bar.setY(0); //下面要添加更换header上控件值的方法 updateHeader(); } } }); //下面要添加更换header上控件值的方法 updateHeader(); }
主要代码就这些,其他的和正常写recyclerview没什么区别.
阅读全文
0 0
- 为recyclerview添加悬浮view
- 为 RecyclerView 添加 OnItemClickListener
- 为RecyclerView添加ContextMenu
- 工具类-添加悬浮窗(View)
- 为RecyclerView添加分隔线
- 为RecyclerView添加分割线
- 为你的应用添加悬浮框
- ios --- 为程序添加一个悬浮框
- 为View添加手势
- 为AlertDialog添加View
- 使用WindowManager添加View——悬浮窗口的基本原理
- 使用WindowManager添加View——悬浮窗口的基本原理
- 悬浮窗口的基本原理(使用WindowManager添加View)
- 使用WindowManager添加View——悬浮窗口的基本原理
- 使用WindowManager添加View——悬浮窗口的基本原理
- 使用WindowManager添加View——悬浮窗口的基本原理
- RecyclerView悬浮条
- RecyclerView:打造悬浮效果
- 域名选择对日后网站SEO优化有点深远影响-20170208
- 安卓黄油刀的使用
- iOS 数据库篇(二) CoreData创建与使用
- 第五课,线性表的本质
- Struts2的类型转换--内建转换器
- 为recyclerview添加悬浮view
- dubbo/dubbox 和SpringMVC 使用
- VR技术标准报告-刷新率,帧数,延迟的关系
- 细致入微 | 让 SQL 优化再多飞一会儿
- 用apktool和dex2jar反编译
- php cookies与sessions
- Android 热更新 bugly
- ajax跨域资源请求解决
- C++ 游戏入门基础(1)