FlowLayout流式布局(仿热门标签)



在Android开发中,布局管理器是构建用户界面的关键部分,它们决定了View在屏幕上的排列方式。`FlowLayout`是一种非标准的布局管理器,它允许子视图按照从左到右、自上而下的顺序流式排列,当一行填满时会自动换行,非常适合用于创建类似热门标签的效果。在本教程中,我们将深入探讨如何在Android中实现`FlowLayout`,以及其背后的原理和用法。 `FlowLayout`并不是Android SDK内置的布局,因此我们需要自己创建一个自定义的布局类来实现这个功能。`FlowLayout`的主要任务是计算每个子视图的位置,并在必要时开始新的一行。这涉及到对`onMeasure()`和`onLayout()`方法的重写。 1. **onMeasure()** 方法:这是测量所有子视图大小的过程,我们需要遍历所有的子View,为每个View测量宽度和高度。考虑到流式布局的特点,我们需要记录当前行的总宽度,如果加上下一个子View的宽度后超过父视图的宽度,则需要换行。同时,我们还需要确保每个子View的最小尺寸满足其自身的要求。 2. **onLayout()** 方法:在这个阶段,我们需要根据测量的结果来放置每个子View。同样地,我们需要按行计算子View的坐标,当一行满时,将下一行的起始位置设置为新的一行的顶部。 为了实现`FlowLayout`,我们可以创建一个新的Java类,继承自`LinearLayout`,并重写`onMeasure()`和`onLayout()`方法。在`onLayout()`中,我们需要根据子View的宽高和行的总宽度来计算它们的X和Y坐标。此外,还可以添加一些属性,如最大行数或行间距,以便进行更灵活的布局定制。 下面是一个简化的`FlowLayout`实现: ```java public class FlowLayout extends ViewGroup { // ... 初始化代码 @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { // ... 测量子View并计算行宽和总高 } @Override protected void onLayout(boolean changed, int l, int t, int r, int b) { // ... 布局子View,根据行宽和总高计算位置 } } ``` 在实际应用中,我们通常会用到`LayoutParams`来控制子View在`FlowLayout`中的排列方式。例如,可以添加一个`gravity`属性来决定子View在行内的对齐方式。 完成`FlowLayout`的自定义后,我们可以在XML布局文件中使用它,像其他布局一样添加子View。在`FlowLayoutDemo`项目中,我们可以创建多个`TextView`作为标签,通过设置合适的文字和背景颜色来模拟热门标签的效果。 为了动态添加或移除标签,我们可以使用`addView()`和`removeView()`方法,或者通过设置Adapter和RecyclerView来实现动态加载和管理`FlowLayout`的子View。 总结起来,`FlowLayout`是Android自定义布局的一个示例,它可以实现类似热门标签的流式布局效果。通过重写`onMeasure()`和`onLayout()`方法,我们可以控制子View的排列和定位,实现高度定制的布局需求。在实际开发中,自定义布局能够帮助我们解决许多标准布局无法满足的复杂场景,提升用户体验。




















































































































































- 1

- syn22032018-07-18别浪费积分了,无法运行
- qq_363116652017-10-31可以 有帮助
- guwei362018-01-15挺好,可以借鉴。

- 粉丝: 16
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 实训报告-网页制作与网站建设项目实战.doc
- 试论互联网+时代事业单位档案管理创新.docx
- PLC控制中央空调节能改造方案设计书1.doc
- 互联网+会计时代-高职《管理会计》课程改革探究.docx
- 基于SNAP网络的实验室监控系统研究设计.doc
- 嵌入式系统程序可移植性设计方案及性能优化.doc
- 单片机电子台历设计方案.docx
- 2017年广西公需科目-“互联网+”开放合作考试及标准答案2(90分).docx
- 抢答器PLC控制系统设计-河南工业大学.doc
- 培训师大计算机采集处理系统.pptx
- 大数据在健康医疗行业中应用概况.pptx
- 慧锦校园网络布线系统措施设计方案.doc
- 机械产品和零件的计算机辅助设计.docx
- 《数据库课程设计方案》实验任务书学时.doc
- 项目管理中如何建立高绩效的研发项目团队.docx
- 基于51单片机的多路温度采集控制系统方案设计书.doc


