自定义ViewGroup须知

自定义ViewGroup须知:

 1.必须复写onMeasure和onLayout方法,根据容器的特性进行布局设计

   2.复写onMeasure方法必须处理父布局设置宽或高为wrap_content情况下,实际测量子View的宽高

   3.要得到子View的margin的值,要在自定义ViewGroup中复写generMarinLayoutParam的四个方法

   4.onLayout方法中设置的是子View的相对位置,控制两个参数:childLeft和childTop即可实现布局

   5.在布局中使用Gravity时要根据宽高进行换算 :

    ​    ​    宽度:parentPaddingleft + childLeft + childMarginLeft + childWidth+ childMaringRight+....+parentPaddingRight

            高度:parentPaddingTop +childTop + childMarginTop +childHeight+childMarginBottom+.....parentPaddingBottom

    ​    ​ 以上宽高位置变更childLeft和childTop

   6.onMeasure设定是总控件宽高,onLayout设置的是子View位置

原文地址:https://www.cnblogs.com/ghhryr-lichl/p/6151228.html