简易流式布局

6人阅读 评论(0) 收藏 举报
public class MyStreamView extends ViewGroup {
    private int mleftMargin=20;
    private int mtopMargin=20;

    public MyStreamView(Context context) {
        this(context,null);
    }

    public MyStreamView(Context context, AttributeSet attrs) {
        this(context, attrs,0);
    }

    public MyStreamView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
        measureChildren(widthMeasureSpec,heightMeasureSpec);

        int leftMargin = mleftMargin;
        int topMargin = mtopMargin;

        int viewHeight = 0;
        int viewWidth = 0;

        //父控件传进来的宽度和高度以及对应的测量模式
        int sizeWidth = MeasureSpec.getSize(widthMeasureSpec);
        int modeWidth = MeasureSpec.getMode(widthMeasureSpec);
        int sizeHeight = MeasureSpec.getSize(heightMeasureSpec);
        int modeHeight = MeasureSpec.getMode(heightMeasureSpec);

        switch (modeHeight){
            case MeasureSpec.AT_MOST:
                int measuredHeight = 0;
                for (int j = 0; j < getChildCount(); j++) {
                    int measuredWidth = getChildAt(j).getMeasuredWidth();
                    measuredHeight = getChildAt(j).getMeasuredHeight();
                    if (leftMargin+measuredWidth+mleftMargin>getWidth()){
                        leftMargin=mleftMargin;
                        topMargin+=measuredHeight+mtopMargin;
                    }
                    leftMargin+=measuredWidth+mleftMargin;
                }
                topMargin+=measuredHeight+mtopMargin;
                break;
        }
        setMeasuredDimension(sizeWidth,topMargin);
    }

    @Override
    protected void onLayout(boolean b, int i, int i1, int i2, int i3) {
        int leftMargin = mleftMargin;
        int topMargin = mtopMargin;

        for (int j = 0; j < getChildCount(); j++) {
            int measuredWidth = getChildAt(j).getMeasuredWidth();
            int measuredHeight = getChildAt(j).getMeasuredHeight();
            if (leftMargin+measuredWidth+mleftMargin>getWidth()){
                leftMargin=mleftMargin;
                topMargin+=measuredHeight+mtopMargin;
                getChildAt(j).layout(leftMargin,topMargin,leftMargin+measuredWidth,topMargin+measuredHeight);
            }else {
                getChildAt(j).layout(leftMargin,topMargin,leftMargin+measuredWidth,topMargin+measuredHeight);
            }
            leftMargin+=measuredWidth+mleftMargin;
        }
    }
}
<com.example.kaoshi.customview.MyStreamView
        android:id="@+id/search"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>


查看评论

HTML5实例教程——简易涂鸦板

-
  • 1970年01月01日 08:00

窗口的简单布局(流式、边框、网格、卡片)

流式布局,边框布局,网格布局,卡片布局的简单实现
  • Alias_fa
  • Alias_fa
  • 2017-01-21 11:05:48
  • 536

FlawLayout流式布局

  • 2017年09月08日 14:04
  • 20.57MB
  • 下载

css流式布局

1、html结构 流式布局 ...
  • wuzhe128520
  • wuzhe128520
  • 2017-01-09 16:27:50
  • 1598

html流式布局

默认情况下,浏览器新起一行显示块元素,而在同一行显示行内元素,这种方式被称为“标准流式布局”...
  • Koupoo
  • Koupoo
  • 2012-11-26 11:00:51
  • 919

Android开发之RecyclerView实现流式布局

RecyclerView的流式布局
  • u012954720
  • u012954720
  • 2016-11-19 23:16:02
  • 3929

android流式布局:FlexboxLayout用法探析(一)

FlexboxLayout是google官方开源的一个可以简单快速创建具有弹性功能的流式布局,它的目的是使用我们常见的布局模式,帮我们很好的实现UI区域的比例划分,比如三列布局,可以非常简单的实现。它...
  • tabolt
  • tabolt
  • 2016-07-01 13:56:32
  • 4992

Android学习笔记:自定义实现流式布局

前几天在开发项目的时候,有一个需求是展示历史搜索启示 ,展示的样式是像瀑布流一样(每一行展示的控件个数根据控件的内容不同而不相同,当一行展示满后,自动换行展示)。最开始是自定义LinearLayout...
  • true100
  • true100
  • 2015-12-29 11:09:31
  • 2019

一个非常好用的Android流式布局

效果图镇楼 首先我们先添加依赖compile 'com.zhy:flowlayout-lib:1.0.3'然后将以下标签和布局添加到项目中。 主布局layouy->activity_flow_...
  • qq_36621990
  • qq_36621990
  • 2017-07-17 17:31:43
  • 948

HTML5&CSS3笔记:流式布局

HTML5&CSS3笔记:流式布局
  • u014328357
  • u014328357
  • 2016-10-24 12:26:56
  • 1494
    个人资料
    持之以恒
    等级:
    访问量: 2677
    积分: 354
    排名: 23万+
    文章分类
    文章存档