Compose Layout
Modifier.layout で LayoutModifier を作る
結果は MeasureResult として返ってくる
Modifier.layout は Measurable と Constraints を受け取り、結果を MeasureResult として返し、カスタムレイアウトが作れるようになっている
前述の Modifier.layout 自体は Modifier なので、結果は Modifier として返す。
ラムダの中の結果が MeasureResult
Measurable.measure に Constraints を渡すことで、 Constrains に応じたレイアウトの Placeable を得ることができる
Placeable で measureWidth や measureHeight を得ることができる
Measurable.measure のラムダの中は MeasureScope になっていて(という表現であっているだろうか)、 MeasureScope.layout によって、最終的に MeasureResult を得る。
この layout の引数にカスタムしたい値を渡すことでカスタムレイアウトを実現する
大事そうなこと
Compose UI では、マルチパス測定は許可されていません。つまり、さまざまな測定構成を試すために、レイアウト要素でその子要素を複数回測定することはできません。
スコープの使用により、子の測定と配置を行えるタイミングが決まります。レイアウトは測定パスとレイアウトパスの実行中のみ測定でき、子の配置はレイアウトパスの実行中に、測定した後でのみ行うことができます。この操作は、Compose スコープ(MeasureScope や PlacementScope など)によりコンパイル時に適用されます。