zoukankan      html  css  js  c++  java
  • 自定义自动换行布局

    注:这篇文章在onmeasure方法的实现上有不合理的地方(见评论),故只能作为一种参考,要当成一个合格控件使用还需要完善。

    暴风影音的搜索页面有一个效果,每一行的组件如果最后一个显示即将超出屏幕宽度,则自动换行。效果图:

    本demo的效果图:

    实现该效果不能使用已有的组件,必须自定义一个布局。

    重点介绍:自定义布局可以继承ViewGroup,要想实现该效果,我们的自定义布局里面必须要继承父类中的onMeasurt()和onLayout()两个方法。

            onMeasure()方法的作用是设置布局的显示范围,超出该范围的部分将被遮挡.核心代码是:setMeasuredDimension(int width,int height).

            onLayout()方法的作用是在父容器内布局子组件,核心功能是根据计算出来的子组件的四个”坐标”将其放在父容器的指定位置,核心代码为:childview.layout(int left,int top,int right,int bottom)

                  下面贴出Demo源码,算法解释已经在注释中了。

    自定义布局:

    HorizantalFallWaterLayout.java

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    37

    38

    39

    40

    41

    42

    43

    44

    45

    46

    47

    48

    49

    50

    .relpost{clear:both}

    Tag:

    Freenovo 发表于2014-01-10 09:54:00 | 编辑 | 分享 0

    引用地址:

  • 相关阅读:
    js获取html参数。
    jquery判断单选按钮是否选中
    js滑动触屏事件监听
    单例模式之Java
    Android开发把项目打包成apk
    jdom解析XML 中文
    PhoneGap Connection
    java 文件操作
    html参数编码
    JS 判断字符串包含
  • 原文地址:https://www.cnblogs.com/freenovo/p/4469790.html
Copyright © 2011-2022 走看看