通过一段代码场景,以Layout 函数为入口分析源码,解答一些心中所惑,如通过 Modifier 设置大小是如果起作用的?MeasurePolicy 接口的 measure 方法是怎么调用的?布局中的测量流程是什么样的?控件是怎么确认大小的?
在 JetPack Compose 手写一个 Row 布局 | 自定义布局 一文中我们已经了解了如何自定义 Layout,使用 Layout 函数即可。
@Composable inline fun Layout( content: @Composable () -> Unit, modifier: Modifier = Modifier, measurePolicy: MeasurePolicy ) {}
我们可以通过参数 modifier 给布局指定大小,在 measurePolicy 中对 children 进行测量和布置,布局的 children 写在 content 函数中。使用起来很方便嘛