美文网首页
ViewGroup在调用onMeasure时,会先测量父View

ViewGroup在调用onMeasure时,会先测量父View

作者: tinyvampirepudg | 来源:发表于2022-03-09 08:52 被阅读0次

    以常见的FrameLayoutLinearLayoutRelativeLayoutConstraintLayout为例,进行分析:

    通过查阅这几个控件的onMeasureonLayoutonDraw方法,得出结果如下:

    控件 onMeasure onLayout onDraw 备注
    FrameLayout 先子view,然后是自身。 先子view,然后是自身。 先自身,然后子view。 child的顺序是正序
    LinearLayout 先子view,然后是自身 先子view,然后是自身 先自身,然后子view child的顺序是正序
    RelativeLayout 先子view,然后是自身。 先子view,然后是自身。 先自身,然后子view。 child的顺序:onMeasure不能保证正序,onLayout和onDraw是正序。
    ConstraintLayout 先子view,然后是自身。 先子view,然后是自身。 子view参与,自身不参与。 child的顺序:onMeasure、onLayout和onDraw是正序。

    ps: 正序是指按照child添加的顺序。

    当然了,在这些ViewGroup实现的onMeasure方法中,child的onMeasure方法可能会被调用多次。

    系列文章:
    从源码角度理解FrameLayout#onMeasure对child的measure调用次数
    从源码角度理解LinearLayout#onMeasure对child的measure调用次数
    从源码角度理解RelativeLayout#onMeasure对child的measure调用次数
    从源码角度理解ConstraintLayout#onMeasure对child的measure调用次数
    ViewGroup在调用onMeasure时,会先测量父View,还是会先测量子View?

    相关文章

      网友评论

          本文标题:ViewGroup在调用onMeasure时,会先测量父View

          本文链接:https://www.haomeiwen.com/subject/qlbnrrtx.html