为什么FlowLayout的 onMeasure方法会执行4次,onLayout方法会执行两次呢,
问老师一个问题,为什么FlowLayout的 onMeasure方法会执行4次,onLayout方法会执行两次呢,下面是log截图
问老师一个问题,为什么FlowLayout的 onMeasure方法会执行4次,onLayout方法会执行两次呢,下面是log截图
2016-01-25
上面我回答的不够详细,
这个控件中,父视图使用unspecified dimensions来将它的每个子视图都测量一次来算出它们到底需要多大尺寸,而这些子视图没被限制的尺寸的和太大或太小,所以会用精确数值再次调用measure()(也就是说,如果子视图不满意它们获得的区域大小,那么父视图将会干涉并设置第二次测量规则)。其中measure()方法会调用onMeasure()方法。
代码中,由于把每行剩余空间重新分配,会调用了requestLayout()方法,这个方法又会导致measure()和onLayout()方法的再次调用。
最后你会发现 onMeasure()方法调用了 1次*2*2=4次 onLayout()方法调用了 1次*2 =2次
下图是View的生命周期.
举报