- onMeasure:
- 确定自身的大小
- 确定子View的大小
流程:
1. ViewGroup开始测量自己的尺寸
2. 为每个子View计算测量的限制信息
3. 把上一步确定的限制信息,传递给每一个字View,然后子View开始measure自己的尺寸
4. 获取子View测量完成后的尺寸
5. ViewGroup根据自身的情况,计算自己的尺寸
6. 保存自身的尺寸
onLayout:
1. 根据规则确定子View位置
流程:
1. 遍历子View
2. 确定自己的规则
3. 子View的测量尺寸
4. left,top,right,bottom
5. child.layout
- 效果
- 代码
自定义View代码
package com.example.as.proj.myviewgroupdemo2;
import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.view.ViewGroup;
import java.util.jar.Attributes;
public class MyViewGroup extends ViewGroup {
public static final int OFFSET = 100; //表示缩进尺寸
public MyViewGroup(Context context){
super(context);
}
public MyViewGroup(Context context, AttributeSet attrs){
super(context, attrs);
}
public MyViewGroup(Context context, AttributeSet attrs, int defStyleAttr){
super(context, attrs, defStyleAttr);
}
@Override
protected void onMeasure(