自定义View
2017-12-25 本文已影响0人
6a9ae66af426
View的三大流程: measure,layout,draw。
measure过程决定了View 的宽高,Measure 完成后,可以通过 getMeasuredWidth() 和 getMeasuredHeight() 的方法来获取到View测量后的宽高,几乎所有情况下他都等同于View最终的宽高,(特殊情况除外)。
layout过程决定了View的四个顶点的坐标和实际View的宽高。完成以后,可以通过getTop,getBottom,getLeft,getRight来拿到View的四个顶点位置,并且可以通过getWidth,getHeight方法拿到View的最终宽高,
draw过程决定了View 的显示,只有draw方法完成以后View的内容才能呈现在屏幕上。
对于直接继承自View和ViewGroup的控件,padding是默认无法生效的,需要自己调整的,而margin是生效的,这是因为margin属性是由父容器控制的。