AndroidのMeasureSpecとは?
MeasureSpecはビューが測定される際のサイズとモードを決定するために使用されます。
AndroidにおいてViewの測定処理はMeasureとLayoutの2段階で行われます。MeasureではViewは自身のMeasureSpecに基づき大きさを算出し、LayoutではMeasureで算出した大きさや親ViewのMeasureSpecに基づき位置を決めます。
MeasureSpecはMeasureModeとMeasureSizeという2つの主要な構成要素からなります。
測定モードは、3 つのケースがあります。
- 正確に:正確なモードで、ビューのサイズが確定しており、測定されたサイズに正確に沿ってレイアウトする必要があります。
- AT_MOST: 最大値モード。viewの大きさは測定したサイズを超えることはできず、必要に応じて自由にレイアウトできます。
- 未指定: 表示ビューの大きさに制限がなく、必要に応じて自由にレイアウトできるモードです。
SizeMeasureは32ビットの整数で、測定モードと具体的なサイズから構成されます。具体的なサイズの値は、MeasureSpecの下位30ビットで表され、測定モードは、MeasureSpecの上位2ビットで表されます。
MeasureSpecは測定モードと測定値を通じて、Viewが測定とレイアウト処理で持つべきサイズやモードを決定するためのルールを提供します。開発者は必要に応じて異なる測定仕様を設定することで、Viewをカスタマイズする効果を得ることができます。