(首先声明,这篇文章是博主在 mooc 上学习了 hyman 的视频打造Android流式布局和热门标签后总结的小知识)
onMeasure实现过程
这篇文章总结一下 onMeasure 函数该如何完成测量过程。
再次看看官网对 onMeasure 函数的说明
1 | /** |
前面讲过,我们通过该函数两个参数来确定 ViewGroup 的宽高及其测量模式。但同时,这个函数需要让子 View 去测量它们自己的宽高,这样,我们才能在 ViewGroup 中得到子 View 的宽高。让子 View 去测量自己的方法是调用 ViewGroup 提供的 measureChild
方法。调用该方法后,可以通过子 View 的 getMeasuredWidth
或 getMeasuredHeight
方法分别获得子 View 的宽高。之后通过我们自己的策略确定 ViewGroup 的宽高。前面讲过,如果是「EXACTLY」模式,那么宽高的值直接就是 onMeasure
传进来的参数值,如果是「AT_MOST」模式,则需要根据子 View 的宽高自行测量,最后通过 setMeasureDimension
方法将宽高作为参数传给 ViewGroup。
下面的代码是 FlowLayout 的 onMeasure 函数的实现方法:
1 |
|