1.处理padding属性和margin属性:自身属性padding和子控件的margin属于自身尺寸的一部分,所以计算尺寸时要算上这两部分,给子控件准备MeasureSpec时也要注意减去子控件的margin
2.为每个子控件单独准备一个MeasureSpec:子控件的width/height为WRAP_CONTENT时,则specMode为ATMOST,为精确值时,则为Exactly。而specSize则根据实际情况灵活给定,子控件的测量结果可能会互相影响,或者前一个子控件的测量结果,影响着后一个子控件的空间。
3.调用子控件的measure()方法而不是onMeasure()方法:measure()会设置PFLAG_LAYOUT_REQUIRED标志,为布局控件放行,还有检查onMeasure()是否合理复写。
4.处理MEASURE_STATE_TOO_SMALL:测量控件时要在setMeasureDimension()时慎加这个标志,因为这个标志会引起重新测量影响效率。在子控件检查MeasureState有这个标志时,要尽量满足子控件的要求,为子控件调整MeasureSpec并重新测量该子控件。