# LayoutModifier

Artifact: [androidx.compose.ui:ui](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/layout/LayoutModifier.kt+class:androidx.compose.ui.layout.LayoutModifier) Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.0.0) Common/AllAndroid/JVM
- Cmn

  ```
  interface LayoutModifier : Modifier.Element
  ```

*** ** * ** ***

A `https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier.Element` that changes how its wrapped content is measured and laid out. It has the same measurement and layout functionality as the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Layout.composable#Layout(kotlin.Function0,androidx.compose.ui.Modifier,androidx.compose.ui.layout.MeasurePolicy)` component, while wrapping exactly one layout due to it being a modifier. In contrast, the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Layout.composable#Layout(kotlin.Function0,androidx.compose.ui.Modifier,androidx.compose.ui.layout.MeasurePolicy)` component is used to define the layout behavior of multiple children.

```kotlin
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.layout.Layout
import androidx.compose.ui.layout.LayoutModifier
import androidx.compose.ui.layout.Measurable
import androidx.compose.ui.layout.MeasureResult
import androidx.compose.ui.layout.MeasureScope
import androidx.compose.ui.layout.layout
import androidx.compose.ui.unit.Constraints
import androidx.compose.ui.unit.offset

val verticalPadding =
    object : LayoutModifier {
        override fun MeasureScope.measure(
            measurable: Measurable,
            constraints: Constraints,
        ): MeasureResult {
            // an example modifier that adds 50 pixels of vertical padding.
            val padding = 50
            val placeable = measurable.measure(constraints.offset(vertical = -padding))
            return layout(placeable.width, placeable.height + padding) {
                placeable.placeRelative(0, padding)
            }
        }
    }
Box(Modifier.background(Color.Gray).then(verticalPadding)) {
    Box(Modifier.fillMaxSize().background(Color.DarkGray))
}
```

| See also |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Layout.composable#Layout(kotlin.Function0,androidx.compose.ui.Modifier,androidx.compose.ui.layout.MeasurePolicy)` |   |

## Summary

| ### Public functions |
|---|---|---|
| `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/IntrinsicMeasureScope.https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/LayoutModifier#(androidx.compose.ui.layout.IntrinsicMeasureScope).maxIntrinsicHeight(androidx.compose.ui.layout.IntrinsicMeasurable,kotlin.Int)( measurable: https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/IntrinsicMeasurable, width: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html )` The lambda used to calculate `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/IntrinsicMeasurable#maxIntrinsicHeight(kotlin.Int)`. | Cmn |
| `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/IntrinsicMeasureScope.https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/LayoutModifier#(androidx.compose.ui.layout.IntrinsicMeasureScope).maxIntrinsicWidth(androidx.compose.ui.layout.IntrinsicMeasurable,kotlin.Int)( measurable: https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/IntrinsicMeasurable, height: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html )` The function used to calculate `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/IntrinsicMeasurable#maxIntrinsicWidth(kotlin.Int)`. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/MeasureResult` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/MeasureScope.https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/LayoutModifier#(androidx.compose.ui.layout.MeasureScope).measure(androidx.compose.ui.layout.Measurable,androidx.compose.ui.unit.Constraints)(measurable: https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Measurable, constraints: https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Constraints)` The function used to measure the modifier. | Cmn |
| `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/IntrinsicMeasureScope.https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/LayoutModifier#(androidx.compose.ui.layout.IntrinsicMeasureScope).minIntrinsicHeight(androidx.compose.ui.layout.IntrinsicMeasurable,kotlin.Int)( measurable: https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/IntrinsicMeasurable, width: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html )` The lambda used to calculate `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/IntrinsicMeasurable#minIntrinsicHeight(kotlin.Int)`. | Cmn |
| `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/IntrinsicMeasureScope.https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/LayoutModifier#(androidx.compose.ui.layout.IntrinsicMeasureScope).minIntrinsicWidth(androidx.compose.ui.layout.IntrinsicMeasurable,kotlin.Int)( measurable: https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/IntrinsicMeasurable, height: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html )` The function used to calculate `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/IntrinsicMeasurable#minIntrinsicWidth(kotlin.Int)`. | Cmn |

| ### Inherited functions |
|---|
| From [androidx.compose.ui.Modifier](https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier) |---|---|---| | `open infix https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier#then(androidx.compose.ui.Modifier)(other: https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier)` Concatenates this modifier with another. | Cmn | |
| From [androidx.compose.ui.Modifier.Element](https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier.Element) |---|---|---| | `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier.Element#all(kotlin.Function1)(predicate: (https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier.Element) -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html)` Returns `true` if `https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier#all(kotlin.Function1)` returns true for all `https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier.Element`s in this `https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier` or if this `https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier` contains no `https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier.Element`s. | Cmn | | `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier.Element#any(kotlin.Function1)(predicate: (https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier.Element) -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html)` Returns `true` if `https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier#any(kotlin.Function1)` returns true for any `https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier.Element` in this `https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier`. | Cmn | | `open R` | `<R : https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html?> https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier.Element#foldIn(kotlin.Any,kotlin.Function2)(initial: R, operation: (https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier.Element, R) -> R)` Accumulates a value starting with `https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier#foldIn(kotlin.Any,kotlin.Function2)` and applying `https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier#foldIn(kotlin.Any,kotlin.Function2)` to the current value and each element from outside in. | Cmn | | `open R` | `<R : https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html?> https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier.Element#foldOut(kotlin.Any,kotlin.Function2)(initial: R, operation: (https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier.Element, R) -> R)` Accumulates a value starting with `https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier#foldOut(kotlin.Any,kotlin.Function2)` and applying `https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier#foldOut(kotlin.Any,kotlin.Function2)` to the current value and each element from inside out. | Cmn | |

## Public functions

### IntrinsicMeasureScope.maxIntrinsicHeight

Cmn Artifact: [androidx.compose.ui:ui](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/layout/LayoutModifier.kt+function:maxIntrinsicHeight) Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.0.0)

```
open fun IntrinsicMeasureScope.maxIntrinsicHeight(
    measurable: IntrinsicMeasurable,
    width: Int
): Int
```

The lambda used to calculate `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/IntrinsicMeasurable#maxIntrinsicHeight(kotlin.Int)`.

### IntrinsicMeasureScope.maxIntrinsicWidth

Cmn Artifact: [androidx.compose.ui:ui](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/layout/LayoutModifier.kt+function:maxIntrinsicWidth) Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.0.0)

```
open fun IntrinsicMeasureScope.maxIntrinsicWidth(
    measurable: IntrinsicMeasurable,
    height: Int
): Int
```

The function used to calculate `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/IntrinsicMeasurable#maxIntrinsicWidth(kotlin.Int)`.

### MeasureScope.measure

Cmn Artifact: [androidx.compose.ui:ui](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/layout/LayoutModifier.kt+function:measure) Added in [1.10.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.10.0)

```
fun MeasureScope.measure(measurable: Measurable, constraints: Constraints): MeasureResult
```

The function used to measure the modifier. The `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/LayoutModifier#(androidx.compose.ui.layout.MeasureScope).measure(androidx.compose.ui.layout.Measurable,androidx.compose.ui.unit.Constraints)` corresponds to the wrapped content, and it can be measured with the desired constraints according to the logic of the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/LayoutModifier`. The modifier needs to choose its own size, which can depend on the size chosen by the wrapped content (the obtained `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable`), if the wrapped content was measured. The size needs to be returned as part of a `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/MeasureResult`, alongside the placement logic of the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable`, which defines how the wrapped content should be positioned inside the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/LayoutModifier`. A convenient way to create the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/MeasureResult` is to use the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/MeasureScope#layout(kotlin.Int,kotlin.Int,kotlin.collections.Map,kotlin.Function1)` factory function.

A `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/LayoutModifier` uses the same measurement and layout concepts and principles as a `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Layout.composable#Layout(kotlin.Function0,androidx.compose.ui.Modifier,androidx.compose.ui.layout.MeasurePolicy)`, the only difference is that they apply to exactly one child. For a more detailed explanation of measurement and layout, see `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/MeasurePolicy`.

### IntrinsicMeasureScope.minIntrinsicHeight

Cmn Artifact: [androidx.compose.ui:ui](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/layout/LayoutModifier.kt+function:minIntrinsicHeight) Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.0.0)

```
open fun IntrinsicMeasureScope.minIntrinsicHeight(
    measurable: IntrinsicMeasurable,
    width: Int
): Int
```

The lambda used to calculate `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/IntrinsicMeasurable#minIntrinsicHeight(kotlin.Int)`.

### IntrinsicMeasureScope.minIntrinsicWidth

Cmn Artifact: [androidx.compose.ui:ui](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/layout/LayoutModifier.kt+function:minIntrinsicWidth) Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.0.0)

```
open fun IntrinsicMeasureScope.minIntrinsicWidth(
    measurable: IntrinsicMeasurable,
    height: Int
): Int
```

The function used to calculate `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/IntrinsicMeasurable#minIntrinsicWidth(kotlin.Int)`.