第一种自定义ViewGroup布局
父容器的大小确定,子控件的大小不确定
思路分析:
1.父容器大小确定,因此设置父容器的测量结果,帮助后来确定子控件的大小
super.onMeasure(widthMeasureSpec, heightMeasureSpec)
2.上一步之后,可以获取父容器的尺寸
3.按照规则,计算子控件的尺寸
4.设置子控件的模式
5.尺寸 模式确定之后,封装成MeasureSpec
6.最后设置子控件
child.measure(wMeasureS,hMeasureS)
7.子控件的大小设置好之后,在Layout进行布局
child.layout(left,top,right,bottom)
Kotlin代码
class MyViewGroup:ViewGroup {
val space = 30
constructor(context: Context, attrs: AttributeSet):super(context, attrs){
}
override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
// 父容器的size 自己的
super.onMeasure(widthMeasureSpec, heightMeasureSpec)
// 获得父容器的宽高
val parentWidth = MeasureSpec.getSize(widthMeasureSpec)
val parentHeight = MeasureSpec.getSize(heightMeasureSpec)
//Log.v("gss","$parentWidth $parentHeight")
// 计算子控件的宽高
var rWidth = 0
var rHeight = 0
if ((childCount+1)/2 == 1){
rWidth = parentWidth - 2*space
rHeight = parentHeight - 2*