美文网首页RecyclerViewAndroid UI交互自定义views
快速利用RecyclerView的LayoutManager搭建

快速利用RecyclerView的LayoutManager搭建

作者: 的一幕 | 来源:发表于2017-03-20 11:10 被阅读4035次

之前也写了一个ViewGroup版本的流式布局,该流式布局有两大优点:可以设置行数是否内容在该行中居中显示(猛戳),说真的自从对RecyclerViewLayoutManager有新的认识后,完全不用担心很多的复杂布局了。而且对ViewGroup测量过程也不用担心了,因为里面有LayoutManager帮我们实现了。下面就进入该篇文章的主题吧,废话不多说,直接上图更有说服力。

simple.gif

上面的示例图是我把ItemView分别用了TextViewImageView。其实这些是没什么好说的,主要是如何定义这样的LayoutManager。相信大家都用过了LinearLayoutManager吧,系统提供的LayoutManager都是对齐的方式进行排版的,我们这里的flow的样式就是在排版item之前,判断了该行多余的空间还够不够显示,如果不够直接换行显示的思路。

使用:

详见TextFlowActivityDiffHeightTextFlowActivityPhotoFlowActivity

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):

商品属性界面.gif

使用:见ProductActivity

常见悬浮商品属性界面(RV嵌套RV,item高度为wrap_content):

悬浮商品属性界面.gif

使用:见SuspensionProductActivity

动画修复问题:

动画演示.gif

使用:见TextFlowActivity

viewpager中流式布局应用:

viewpager中流式布局.gif

使用:见ViewPagerActivity

添加RV嵌套RV高度为wrap_content不显示问题,请使用:
NestedRecyclerView

添加长点击进入删除效果,点击外面进入正常模式:

长点击删除界面.gif
使用:见LongClickDeleteTextFlowActivity

gradle依赖:

all projects {
    repositories {
        ...
        maven { url 'https://jitpack.io' }
    }
}

dependencies {
        compile 'com.github.1002326270xc:LayoutManager-FlowLayout:v1.7'
}

欢迎大家提出问题,留言板留言或邮箱直接联系我。我会第一时间测试相关的bug

欢迎客官到本店光临:184793647(qq群)

关于我:

email:a1002326270@163.com
csdn:enter
github:enter

相关文章

网友评论

  • 74629005e5b8:楼主你这个商品属性界面如果内容 过多 上下滑动时 每个子项之间 的 距离会增大 怎么解决
  • 74629005e5b8:楼主你这个商品属性界面如果内容 过多 上下滑动时 每个子项之间 的 距离会增大 怎么解决
  • a50cf46914d2:RecyclerView嵌套Recyclerview,外部RecyclerView是LinearLayoutManager,里面RecyclerView用FlowLayoutManager,里面的根本显示不出来
    的一幕:@筱内涵丶 这里用我封装的measureflowlayoutmanager吧
    a50cf46914d2:@another_a4ca 试了不行,外层RecyclerView的layoutManager调用了setAutoMeasureEnabled(true),内层的也调用了,还是不显示,只能自己算
    another丶丶:帮作者回答一下吧,我找到原因了。因为RecyclerView的高度是由LayoutManager控制的,默认情况下,继承于LayoutManager的子类不会开启自动测量,所以我们手动调用一下layoutManager.setAutoMeasureEnabled(true)通知LayoutManager自动测量就OK了
  • 半夏微凉sheila: recycleview嵌套recycleview 时,内层的recycleview设置为wrap_content 不显示,给固定值才显示
    的一幕:@Wosika里面的recyclerView是需要指定高度的,商品属性界面的指定高度你可以看下,是根据内容的高度来设置layoutparams的
    Wosika:我也遇到这个情况。解决了吗。。
  • 我是一个Android开发:刷新适配器的时候显示不出来,除非是一开始就设置数据,很奇怪
    的一幕:你好,刚已经改过该问题了,谢谢你提出的issue。
  • 1d66a3c50b68://不要忘了最后一行进行刷新下布局
    使用这个requestLayout()改变不了宽高,不知道用什么api
    的一幕:@FTD彤 你要刷新你的adapter才会去刷新的
    1d66a3c50b68:@的一幕 当所有的item被移除后,宽高固定不变
    的一幕:你能说下你的场景吗,这里改变宽高是根据你的内容来改变的啊
  • 4ba027c53def:当RecyclerView夹在两个控件之间且高度设置为wrap_content时,显示不出来
    的一幕:这里已经修复了该问题,欢迎提出issue。
    的一幕:这里我只是在测量的方法里面用的activity的content高度,这里如果直接显示的话,直接用totalheight进行测量。
  • wasdzy111:当RecyclerView 的高度设置为wrap_content的时候 显示不出来?
    74629005e5b8:楼主你这个商品属性界面如果内容 过多 上下滑动时 每个子项之间 的 距离会增大 怎么解决
    的一幕:这里已经修复了该问题,欢迎提出issue。
    的一幕:你好,已经添加了RecyclerView测量的代码,修改wrap_content已经正常显示,谢谢提出Issues:+1:

本文标题:快速利用RecyclerView的LayoutManager搭建

本文链接:https://www.haomeiwen.com/subject/uenvnttx.html