流式布局(自定义控件)

来源:互联网 发布:qq for mac远程协助 编辑:程序博客网 时间:2024/04/25 07:59

1.创建MyViewGroup extends ViewGroup

package com.example.lsllayout;import android.content.Context;import android.graphics.Canvas;import android.util.AttributeSet;import android.view.View;import android.view.ViewGroup;/** * Created by Yangh-PC on 2017/11/30. */public class MyViewGroup extends ViewGroup {    public MyViewGroup(Context context) {        this(context,null);    }    public MyViewGroup(Context context, AttributeSet attrs) {        this(context, attrs,0);    }    public MyViewGroup(Context context, AttributeSet attrs, int defStyleAttr) {        super(context, attrs, defStyleAttr);    }    //测量    @Override    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {        super.onMeasure(widthMeasureSpec, heightMeasureSpec);        //测量view        measureChildren(widthMeasureSpec,heightMeasureSpec);    }    //绘制的方法    @Override    protected void onDraw(Canvas canvas) {        super.onDraw(canvas);    }    @Override    protected void onLayout(boolean changed, int l, int t, int r, int b) {        int currentWidth=0;        int currentHeight=0;        //得到子view的个数        int  childCount=getChildCount();        for (int  i=0;i<childCount;i++)        {            //得到这个viewGroup里面的每一个子view     View childView=getChildAt(i);            //得到每一个view的宽高            int width=childView.getMeasuredWidth();            int height=childView.getMeasuredHeight();            //确定子view的高度            childView.layout(currentWidth,currentHeight,currentWidth+width,currentHeight+height);          //累加所有的子view宽高      currentWidth+=width;            currentHeight+=height;        }}}

2.布局

<com.example.lsllayout.MyViewGroup       android:layout_width="wrap_content"       android:layout_height="wrap_content">        <TextView            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:textSize="20sp"            android:padding="5dp"            android:text="11111"/>        <TextView            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:textSize="20sp"            android:padding="5dp"            android:text="1111"/>        <TextView            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:textSize="20sp"            android:padding="5dp"            android:text="11111"/>   </com.example.lsllayout.MyViewGroup>
原创粉丝点击