RulerScope

Interface

Common
@MeasureScopeMarker
interface RulerScope : Density

A scope used in MeasureScope.layout for the rulers parameter to allow a layout to define Ruler values for children.

Properties

Common
val coordinates: LayoutCoordinates

LayoutCoordinates of the position in the hierarchy that the Ruler will be provided.

Functions

infix fun Ruler.provides(value: Float)

Provides a constant value for a Ruler.

infix fun VerticalRuler.providesRelative(value: Float)

Provides a VerticalRuler value that is relative to the left side in an LTR layout or right side on an RTL layout.

Code Examples

RulerProducerUsage

@Composable
fun RulerProducerUsage(content: @Composable BoxScope.() -> Unit) {
    val safeInsets = WindowInsets.safeContent
    Box(
        Modifier.fillMaxSize().layout { measurable, constraints ->
            val placeable = measurable.measure(constraints)
            layout(
                width = placeable.width,
                height = placeable.height,
                rulers = {
                    val height = coordinates.size.height
                    SafeBottomRuler provides (height - safeInsets.getBottom(this)).toFloat()
                },
            ) {
                placeable.place(0, 0)
            }
        },
        content = content,
    )
}