layout过程的作用是确定元素的位置
ViewGroup中大致流程为:(以竖直方向的LinearLayout为例)
- 从layout方法开始,通过setFrame方法确定四个顶点的位置,即可确定元素在父容器中的位置
- 接着调用onLayout方法,确定子元素的位置。由于实现方式与布局有关,所以此方法为抽象方法,有子类实现逻辑。
以竖直方向的LinearLayout为例
重写onLayout方法,随后通过layoutVertical方法进行之后的逻辑
- layoutVertical方法会遍历所有的资源,通过setChildFrame来确定子元素的位置,之后调用子元素的layout的方法。
- 这样父元素在layout方法中完成了自己的定位,并通过onLayout方法去调用子元素的layout方法,以此反复,完成View树的layout过程。
网友评论