Measurable
-
Cmn
interface Measurable : IntrinsicMeasurable
A part of the composition that can be measured. This represents a layout. The instance should never be stored.
Summary
Public functions |
||
|---|---|---|
Placeable |
measure(constraints: Constraints)Measures the layout with |
Cmn
|
Extension properties |
||
|---|---|---|
Any? |
android
|
|
Any? |
android
|
|
Any? |
Retrieves the tag associated to a composable with the |
Cmn
|
Inherited functions |
||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Inherited properties |
|||
|---|---|---|---|
|
Public functions
measure
fun measure(constraints: Constraints): Placeable
Measures the layout with constraints, returning a Placeable layout that has its new size. A Measurable can only be measured once inside a layout pass.
Extension properties
layoutId
val Measurable.layoutId: Any?
Retrieves the tag associated to a composable with the Modifier.layoutId modifier. For a parent data value to be returned by this property when not using the Modifier.layoutId modifier, the parent data value should implement the LayoutIdParentData interface.
Example usage:
import androidx.compose.foundation.layout.Box import androidx.compose.ui.Modifier import androidx.compose.ui.layout.Layout import androidx.compose.ui.layout.layout import androidx.compose.ui.layout.layoutId import androidx.compose.ui.unit.Constraints Layout({ // Here the Containers are only needed to apply the modifiers. You could use the // modifier on header and footer directly if they are composables accepting modifiers. Box(Modifier.layoutId("header")) { header() } Box(Modifier.layoutId("footer")) { footer() } }) { measurables, constraints -> val placeables = measurables.map { measurable -> when (measurable.layoutId) { // You should use appropriate constraints. Here we measure fake constraints. "header" -> measurable.measure(Constraints.fixed(100, 100)) "footer" -> measurable.measure(constraints) else -> error("Unexpected tag") } } // Size should be derived from children measured sizes on placeables, // but this is simplified for the purposes of the example. layout(100, 100) { placeables.forEach { it.placeRelative(0, 0) } } }