---
title: "MeasureScope"
description: "The receiver scope of a layout's measure lambda. The return value of the measure lambda is
[MeasureResult], which should be returned by [layout]"
type: "interface"
---

<div class='type'>Interface</div>


<a id='references'></a>

<div class='sourceset sourceset-common'>Common</div>



```kotlin
@MeasureScopeMarker
@JvmDefaultWithCompatibility
interface MeasureScope : IntrinsicMeasureScope
```


The receiver scope of a layout's measure lambda. The return value of the measure lambda is
`MeasureResult`, which should be returned by `layout`


## Functions

```kotlin
fun layout(
        width: Int,
        height: Int,
        alignmentLines: Map<AlignmentLine, Int> = emptyMap(),
        placementBlock: Placeable.PlacementScope.() -> Unit,
    ) = layout(width, height, alignmentLines, null, placementBlock)
```


Sets the size and alignment lines of the measured layout, as well as the positioning block
that defines the children positioning logic. The `placementBlock` is a lambda used for
positioning children. `Placeable.placeAt` should be called on children inside placementBlock.
The `alignmentLines` can be used by the parent layouts to decide layout, and can be queried
using the `Placeable.get` operator. Note that alignment lines will be inherited by parent
layouts, such that indirect parents will be able to query them as well.

#### Parameters

| | |
| --- | --- |
| width | the measured width of the layout |
| height | the measured height of the layout |
| alignmentLines | the alignment lines defined by the layout |
| placementBlock | block defining the children positioning of the current layout |



```kotlin
fun layout(
        width: Int,
        height: Int,
        alignmentLines: Map<AlignmentLine, Int> = emptyMap(),
        rulers: (RulerScope.() -> Unit)? = null,
        placementBlock: Placeable.PlacementScope.() -> Unit,
    ): MeasureResult
```


Sets the size and alignment lines of the measured layout, as well as the positioning block
that defines the children positioning logic. The `placementBlock` is a lambda used for
positioning children. `Placeable.placeAt` should be called on children inside placementBlock.
The `alignmentLines` can be used by the parent layouts to decide layout, and can be queried
using the `Placeable.get` operator. Note that alignment lines will be inherited by parent
layouts, such that indirect parents will be able to query them as well.

#### Parameters

| | |
| --- | --- |
| width | the measured width of the layout |
| height | the measured height of the layout |
| alignmentLines | the alignment lines defined by the layout |
| rulers | a method to set Ruler values used by all placed children |
| placementBlock | block defining the children positioning of the current layout |




