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>