We just launched Compose Examples featuring over 150+ components! Check it out →

layoutId

Common

Modifier in Compose Ui

Tag the element with [layoutId] to identify the element within its parent.

Last updated:

Installation

dependencies {
   implementation("androidx.compose.ui:ui:1.8.0-alpha01")
}

Overloads

@Stable
fun Modifier.layoutId(layoutId: Any)

Code Example

LayoutTagChildrenUsage

@Composable
fun LayoutTagChildrenUsage(header: @Composable () -> Unit, footer: @Composable () -> Unit) {
    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) } }
    }
}
by @alexstyl