转载:https://www.jianshu.com/p/95bd3dd02d42?from=timeline
快速利用RecyclerView的LayoutManager搭建流式布局
之前也写了一个ViewGroup
版本的流式布局,该流式布局有两大优点:可以设置行数和是否内容在该行中居中显示(猛戳),说真的自从对RecyclerView的LayoutManager有新的认识后,完全不用担心很多的复杂布局了。而且对ViewGroup测量过程也不用担心了,因为里面有LayoutManager帮我们实现了。下面就进入该篇文章的主题吧,废话不多说,直接上图更有说服力。
![](https://i-blog.csdnimg.cn/blog_migrate/771efdd0813778ad2b9686ec2c35e5c2.webp?x-image-process=image/format,png)
上面的示例图是我把ItemView分别用了TextView和ImageView。其实这些是没什么好说的,主要是如何定义这样的LayoutManager。相信大家都用过了LinearLayoutManager吧,系统提供的LayoutManager都是对齐的方式进行排版的,我们这里的flow的样式就是在排版item之前,判断了该行多余的空间还够不够显示,如果不够直接换行显示的思路。
使用:
详见TextFlowActivity、DiffHeightTextFlowActivity、PhotoFlowActivity
RecyclerView recyclerView = (RecyclerView) findViewById(flow);
FlowLayoutManager flowLayoutManager = new FlowLayoutManager();
//设置每一个item间距
recyclerView.addItemDecoration(new SpaceItemDecoration(dp2px(10)));
recyclerView.setLayoutManager(flowLayoutManager);
recyclerView.setAdapter(new FlowAdapter());
常见商品属性界面(RV嵌套RV,item高度为wrap_content):
![](https://i-blog.csdnimg.cn/blog_migrate/d311efb260a206d96ff9af0344fc6568.webp?x-image-process=image/format,png)
使用:见ProductActivity
常见悬浮商品属性界面(RV嵌套RV,item高度为wrap_content):
![](https://i-blog.csdnimg.cn/blog_migrate/2072a2067ede119c38c5be5c353a975f.webp?x-image-process=image/format,png)
动画修复问题:
![](https://i-blog.csdnimg.cn/blog_migrate/8f4d31886658a70e9439893bd2e96ba3.webp?x-image-process=image/format,png)
使用:见TextFlowActivity
viewpager中流式布局应用:
![](https://i-blog.csdnimg.cn/blog_migrate/0290d224c35fb888895e9dc1c8068280.webp?x-image-process=image/format,png)
添加RV嵌套RV高度为wrap_content不显示问题,请使用:
NestedRecyclerView
添加长点击进入删除效果,点击外面进入正常模式:
![](https://i-blog.csdnimg.cn/blog_migrate/2d8414b13cc1d3d41ca1ec6effe599e1.webp?x-image-process=image/format,png)
使用:见 LongClickDeleteTextFlowActivity
gradle依赖:
all projects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
dependencies {
compile 'com.github.1002326270xc:LayoutManager-FlowLayout:v1.6'
}
欢迎大家提出问题,留言板留言或邮箱