没有合适的资源?快使用搜索试试~ 我知道了~
【Android】掌握自定义LayoutManager(二) 实现流式布局1
需积分: 0 0 下载量 26 浏览量
2022-08-03
12:08:06
上传
评论
收藏 957KB PDF 举报
温馨提示
试读
19页
【Android】掌握自定义LayoutManager(二) 实现流式布局 - zxt0601的博客 - CSDN博客博客专家【Android】掌握自定义Lay
资源详情
资源评论
资源推荐
2017/11/27 【Android】掌握自定义LayoutManager(二) 实现流式布局 - zxt0601的博客 - CSDN博客
http://m.blog.csdn.net/zxt0601/article/details/52956504 1/19
(/zxt0601) zxt0601 (/zxt0601) 博客专家
【Android】掌握自定义LayoutManager(二) 实现流式布局
发表于2016/10/28 17:58:17 12414人阅读
分类: Android RecyclerView家族 自定义LayoutManager
本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布
转载请标明出处:
http://blog.csdn.net/zxt0601/article/details/52956504 (http://blog.csdn.net/zxt0601/ar
ticle/details/52956504)
本文出自:【张旭童的博客】 (http://blog.csdn.net/zxt0601)
本系列文章相关代码传送门:
自定义LayoutManager实现的流式布局 (https://github.com/mcxtzhang/FlowLayoutManag
er)
欢迎star,pr,issue。
本系列文章目录:
掌握自定义LayoutManager(一) 系列开篇 常见误区、问题、注意事项,常用API。 (http://
blog.csdn.net/zxt0601/article/details/52948009)
掌握自定义LayoutManager(二) 实现流式布局 (http://blog.csdn.net/zxt0601/article/detail
s/52956504)
一 概述
2017/11/27 【Android】掌握自定义LayoutManager(二) 实现流式布局 - zxt0601的博客 - CSDN博客
http://m.blog.csdn.net/zxt0601/article/details/52956504 2/19
在开始之前,我想说,如果需求是每个Item宽高一样,实现起来复杂度比每个Item宽高不
一样的,要小10+倍。
然而我们今天要实现的流式布局,恰巧就是至少每个Item的宽度不一样,所以在计算坐标
的时候算的我死去活来。先看一下效果图:
艾玛,换成妹子图后貌似好看了许多,我都不认识它了,好吧,项目里它一般长下面这
样:
往常这种效果,我们一般使用自定义ViewGroup实现,我以前也写了一个。自定义VG实
2017/11/27 【Android】掌握自定义LayoutManager(二) 实现流式布局 - zxt0601的博客 - CSDN博客
http://m.blog.csdn.net/zxt0601/article/details/52956504 3/19
现流式布局 (http://blog.csdn.net/zxt0601/article/details/50533658)
这不最近再研究自定义LayoutManager么,想来想去也没有好的创意,就先拿它开第一刀
吧。
(后话:流式布局Item宽度不一,不知不觉给自己挖了个大坑,造成拓展一些功能难度倍
增,观之网上的DEMO,99%Item的大小都是一样的,so,这个系列的下一篇我计划 实
现一个Item大小一样 的酷炫LayoutManager。但是最终做成啥样的效果还没想好,有朋
友看到酷炫的效果可以告诉我,我去高仿一个。)
自定义LayoutManager的步骤:
以本文的流式布局为例,需求是一个垂直滚动的布局,子View以流式排列。先总结一下
步骤:
一 实现 generateDefaultLayoutParams()
二 实现 onLayoutChildren()
三 竖直滚动需要 重写canScrollVertically()和scrollVerticallyBy()
下面我们就一步一步来吧。
二 实现generateDefaultLayoutParams()
如果没有特殊需求,大部分情况下,我们只需要如下重写该方法即可。
RecyclerView.LayoutParams 是继承自 android.view.ViewGroup.MarginLayoutParams 的,所以
可以方便的使用各种margin。
这个方法最终会在 recycler.getViewForPosition(i) 时调用到,在该方法浩长源码的最下
方:
@Override
public RecyclerView.LayoutParams generateDefaultLayoutParams() {
return new RecyclerView.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
}
1
2
3
4
剩余18页未读,继续阅读
滕扬Lance
- 粉丝: 20
- 资源: 304
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0