Android流式布局之FluidLayout

作者: a57ecf3aaaf2 | 来源:发表于2016-05-29 14:32 被阅读8453次

    FluidLayout简介

    FluidLayout是本人开源的一个项目,提供了流式布局的布局方式。除了Android中的LinearLayoutRelativeLayoutFrameLayoutGridLayout等常用布局方式,相信大家也曾有过流式布局的需求,比如各大软件中的标签、小说热搜列表等,都可能用到流式布局。

    搜索热词

    声明属性

    FluidLayout支持3种布局方式,当每一个子布局的高度不相同时,可以实现如下布局:

    • top - 单行顶部对其
    • bottom - 单行底部对其
    • center - 单行垂直居中对齐

    支持子view声明对其方式,以及父布局声明所有子view的对其方式,与常见的LinearLayout等布局方式使用方法相同。

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <declare-styleable name="FluidLayout">
            <attr name="gravity" >
                <flag name="top" value="0x30" />
                <flag name="bottom" value="0x50" />
                <flag name="center" value="0x11" />
            </attr>
        </declare-styleable>
    
        <declare-styleable name="FluidLayout_Layout">
            <attr name="layout_gravity">
                <flag name="top" value="0x30" />
                <flag name="bottom" value="0x50" />
                <flag name="center" value="0x11" />
            </attr>
        </declare-styleable>
    </resources>
    

    测量尺寸、控制布局

    通过继承ViewGroup,实现onMeasure方法及onLayout方法。

    • onMeasure - 通过测量子view的高宽、确定其对其方式,计算FluidLayout的高宽;
    • onLayout - 根据子view的高宽及父布局的大小合理布局子view,实现流式布局。

    自定义内部类LayoutParams

    继承于ViewGroup.MarginLayoutParams,实现FluidLayout自己的布局属性,用于在子view中声明单独的对其方式。

    包含如下三种自定义对其方式:

    Gravity.TOPGravity.BOTTOMGravity.CENTER.

    来看下最终的效果:

    `FluidLayout `- 支持嵌套在`ScrollView`中使用

    作者 @fynn
    项目地址 github

    PS:本文及项目由本人原创,未经许可不得转载。

    相关文章

      网友评论

        本文标题:Android流式布局之FluidLayout

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