Interface

LayoutModifierNode

A Modifier.Node that changes how its wrapped content is measured and laid out.

LayoutModifierNodeSample

@Sampled
@Composable
fun LayoutModifierNodeSample() {
    class VerticalPadding(var padding: Dp) : LayoutModifierNode, Modifier.Node() {
        override fun MeasureScope.measure(
            measurable: Measurable,
            constraints: Constraints,
        ): MeasureResult {
            val paddingPx = padding.roundToPx()
            val placeable = measurable.measure(constraints.offset(vertical = -paddingPx))
            return layout(placeable.width, placeable.height + paddingPx) {
                placeable.placeRelative(0, paddingPx)
            }
        }
    }
    data class VerticalPaddingElement(val padding: Dp) : ModifierNodeElement<VerticalPadding>() {
        override fun create() = VerticalPadding(padding)

        override fun update(node: VerticalPadding) {
            node.padding = padding
        }

        override fun InspectorInfo.inspectableProperties() {
            name = "verticalPadding"
            properties["padding"] = padding
        }
    }
Jetpack Compose beyond MaterialFree components, screens and templates for apps that don’t look like Google’s. Copy them into your app, or let your coding agent add them.Browse for free

Content updated: