Android中常见的热门标签的流式布局的实现

  • 来源:iteye
  • 作者:泊菜2014
  • 字体:【
  • 时间:2015-05-02
  • 点击:
  • 收藏本文
一、概述:
在日常的app使用中,我们会在android 的app中看见 热门标签等自动换行的流式布局,今天,我们就来看看如何
 
自定义一个类似热门标签那样的流式布局吧
 
类似的自定义布局。下面我们就来详细介绍流式布局的应用特点以及用的的技术点:
 
1.流式布局的特点以及应用场景
    特点:当上面一行的空间不够容纳新的TextView时候,
    才开辟下一行的空间
 
  原理图:

 场景:主要用于关键词搜索或者热门标签等场景
2.自定义ViewGroup,重点重写下面两个方法
 
    1、onMeasure:测量子view的宽高,设置自己的宽和高
 
    2、onLayout:设置子view的位置
 
    onMeasure:根据子view的布局文件中属性,来为子view设置测量模式和测量值
    测量=测量模式+测量值;
 
    测量模式有3种:
    EXACTLY:表示设置了精确的值,一般当childView设置其宽、高为精确值、match_parent时,ViewGroup会将其设置为EXACTLY;
    AT_MOST:表示子布局被限制在一个最大值内,一般当childView设置其宽、高为wrap_content时,ViewGroup会将其设置为AT_MOST;
    UNSPECIFIED:表示子布局想要多大就多大,一般出现在AadapterView的item的heightMode中、ScrollView的childView的heightMode中;此种模式比较少见。
3.LayoutParams
    ViewGroup LayoutParams :每个 ViewGroup 对应一个 LayoutParams; 即 ViewGroup -> LayoutParams
    getLayoutParams 不知道转为哪个对应的LayoutParams ,其实很简单,就是如下:
    子View.getLayoutParams 得到的LayoutParams对应的就是 子View所在的父控件的LayoutParams;
    例如,LinearLayout 里面的子view.getLayoutParams ->LinearLayout.LayoutParams
    所以 咱们的FlowLayout 也需要一个LayoutParams,由于上面的效果图是子View的 margin,
    所以应该使用MarginLayoutParams。即FlowLayout->MarginLayoutParams
 
4.最后来看看实现的最终效果图:

二、热门标签的流式布局的实现:
 
1. 自定义热门标签的ViewGroup实现
 
  根据上面的技术分析,自定义类继承于ViewGroup,并重写 onMeasure和onLayout等方法。具体实现代码如下:
 
 
 
Plain代码
2.相关的布局文件:
 
引用自定义控件:
 
 
 
Plain代码
TextView的样式文件:
 
 
 
Plain代码
三、使用该自定义布局控件类
 
最后,如何使用该自定义的热门标签控件类呢?很简单,请看下面实例代码:
 
 
Plain代码
暂无评论
  • 1:请一针见血的评论。
  • 2:评论需要审核通过后才能显示。
  • 3:评论字数限制在1000字以内。
  • 当前字数:0
热门文章
推荐文章
随机文章
关于本站 - 广告服务 - 版权声明 - 联系我们 - 友情链接 - 网站地图 - 帮助中心