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