# Placeable.PlacementScope

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/Placeable.kt+class:androidx.compose.ui.layout.Placeable.PlacementScope) Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.0.0) Common/AllAndroid/JVM
- Cmn

  ```
  @PlacementScopeMarker
  abstract class Placeable.PlacementScope : Density
  ```

*** ** * ** ***

Receiver scope that permits explicit placement of a `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable`.

While a `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable` may be placed at any time, this explicit receiver scope is used to discourage placement outside of `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/MeasureScope#layout(kotlin.Int,kotlin.Int,kotlin.collections.Map,kotlin.Function1)` positioning blocks. This permits Compose UI to perform additional layout optimizations allowing repositioning a `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable` without remeasuring its original `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Measurable` if factors contributing to its potential measurement have not changed. The scope also allows automatic mirroring of children positions in RTL layout direction contexts using the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeRelative(androidx.compose.ui.unit.IntOffset,kotlin.Float)` methods available in the scope. If the automatic mirroring is not desired, `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).place(kotlin.Int,kotlin.Int,kotlin.Float)` should be used instead.

## Summary

| ### Public constructors |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#PlacementScope()()` | Cmn |

| ### Public functions |
|---|---|---|
| `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Ruler.https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Ruler).current(kotlin.Float)(defaultValue: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html)` Returns the value for this `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Ruler` or `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Ruler).current(kotlin.Float)` if it wasn't `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/RulerScope#(androidx.compose.ui.layout.Ruler).provides(kotlin.Float)`. | Cmn |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).place(androidx.compose.ui.unit.IntOffset,kotlin.Float)(position: https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/IntOffset, zIndex: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html)` Place a `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable` at `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).place(androidx.compose.ui.unit.IntOffset,kotlin.Float)` in its parent's coordinate system. | Cmn |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).place(kotlin.Int,kotlin.Int,kotlin.Float)(x: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html, y: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html, zIndex: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html)` Place a `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable` at `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).place(kotlin.Int,kotlin.Int,kotlin.Float)`, `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).place(kotlin.Int,kotlin.Int,kotlin.Float)` in its parent's coordinate system. | Cmn |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeRelative(androidx.compose.ui.unit.IntOffset,kotlin.Float)(position: https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/IntOffset, zIndex: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html)` Place a `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable` at `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeRelative(androidx.compose.ui.unit.IntOffset,kotlin.Float)` in its parent's coordinate system. | Cmn |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeRelative(kotlin.Int,kotlin.Int,kotlin.Float)(x: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html, y: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html, zIndex: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html)` Place a `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable` at `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeRelative(kotlin.Int,kotlin.Int,kotlin.Float)`, `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeRelative(kotlin.Int,kotlin.Int,kotlin.Float)` in its parent's coordinate system. | Cmn |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeRelativeWithLayer(androidx.compose.ui.unit.IntOffset,androidx.compose.ui.graphics.layer.GraphicsLayer,kotlin.Float)( position: https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/IntOffset, layer: https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/layer/GraphicsLayer, zIndex: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html )` Place a `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable` at `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeRelativeWithLayer(androidx.compose.ui.unit.IntOffset,androidx.compose.ui.graphics.layer.GraphicsLayer,kotlin.Float)` in its parent's coordinate system with an introduced graphic layer. | Cmn |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeRelativeWithLayer(androidx.compose.ui.unit.IntOffset,kotlin.Float,kotlin.Function1)( position: https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/IntOffset, zIndex: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html, layerBlock: https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/GraphicsLayerScope.() -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html )` Place a `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable` at `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeRelativeWithLayer(androidx.compose.ui.unit.IntOffset,kotlin.Float,kotlin.Function1)` in its parent's coordinate system with an introduced graphic layer. | Cmn |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeRelativeWithLayer(kotlin.Int,kotlin.Int,androidx.compose.ui.graphics.layer.GraphicsLayer,kotlin.Float)( x: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html, y: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html, layer: https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/layer/GraphicsLayer, zIndex: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html )` Place a `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable` at `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeRelativeWithLayer(kotlin.Int,kotlin.Int,androidx.compose.ui.graphics.layer.GraphicsLayer,kotlin.Float)`, `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeRelativeWithLayer(kotlin.Int,kotlin.Int,androidx.compose.ui.graphics.layer.GraphicsLayer,kotlin.Float)` in its parent's coordinate system with an introduced graphic layer. | Cmn |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeRelativeWithLayer(kotlin.Int,kotlin.Int,kotlin.Float,kotlin.Function1)( x: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html, y: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html, zIndex: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html, layerBlock: https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/GraphicsLayerScope.() -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html )` Place a `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable` at `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeRelativeWithLayer(kotlin.Int,kotlin.Int,kotlin.Float,kotlin.Function1)`, `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeRelativeWithLayer(kotlin.Int,kotlin.Int,kotlin.Float,kotlin.Function1)` in its parent's coordinate system with an introduced graphic layer. | Cmn |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeWithLayer(androidx.compose.ui.unit.IntOffset,androidx.compose.ui.graphics.layer.GraphicsLayer,kotlin.Float)( position: https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/IntOffset, layer: https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/layer/GraphicsLayer, zIndex: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html )` Place a `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable` at `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeWithLayer(androidx.compose.ui.unit.IntOffset,androidx.compose.ui.graphics.layer.GraphicsLayer,kotlin.Float)` in its parent's coordinate system with an introduced graphic layer. | Cmn |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeWithLayer(androidx.compose.ui.unit.IntOffset,kotlin.Float,kotlin.Function1)( position: https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/IntOffset, zIndex: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html, layerBlock: https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/GraphicsLayerScope.() -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html )` Place a `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable` at `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeWithLayer(androidx.compose.ui.unit.IntOffset,kotlin.Float,kotlin.Function1)` in its parent's coordinate system with an introduced graphic layer. | Cmn |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeWithLayer(kotlin.Int,kotlin.Int,androidx.compose.ui.graphics.layer.GraphicsLayer,kotlin.Float)( x: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html, y: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html, layer: https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/layer/GraphicsLayer, zIndex: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html )` Place a `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable` at `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeWithLayer(kotlin.Int,kotlin.Int,androidx.compose.ui.graphics.layer.GraphicsLayer,kotlin.Float)`, `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeWithLayer(kotlin.Int,kotlin.Int,androidx.compose.ui.graphics.layer.GraphicsLayer,kotlin.Float)` in its parent's coordinate system with an introduced graphic layer. | Cmn |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeWithLayer(kotlin.Int,kotlin.Int,kotlin.Float,kotlin.Function1)( x: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html, y: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html, zIndex: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html, layerBlock: https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/GraphicsLayerScope.() -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html )` Place a `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable` at `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeWithLayer(kotlin.Int,kotlin.Int,kotlin.Float,kotlin.Function1)`, `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeWithLayer(kotlin.Int,kotlin.Int,kotlin.Float,kotlin.Function1)` in its parent's coordinate system with an introduced graphic layer. | Cmn |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#withMotionFrameOfReferencePlacement(kotlin.Function1)(block: https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope.() -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html)` Placement done under `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#withMotionFrameOfReferencePlacement(kotlin.Function1)`, will have their `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable` placed on the same frame of reference as the current layout. | Cmn |

| ### Public properties |
|---|---|---|
| `open https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/LayoutCoordinates?` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#coordinates()` The `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/LayoutCoordinates` of this layout, if known or `null` if the layout hasn't been placed yet. | Cmn |
| `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#density()` The logical density of the display. | Cmn |
| `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#fontScale()` Current user preference for the scaling factor for fonts. | Cmn |

| ### Protected properties |
|---|---|---|
| `abstract https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/LayoutDirection` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#parentLayoutDirection()` Keeps the layout direction of the parent of the placeable that is being places using current `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope`. | Cmn |
| `abstract https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#parentWidth()` Keeps the parent layout node's width to make the automatic mirroring of the position in RTL environment. | Cmn |

| ### Extension functions |
|---|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-list/index.html<https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/RectRulers>` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope.https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable.PlacementScope).getDisplayCutoutBounds()()` Returns a List of `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/RectRulers`, one `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/RectRulers` for each display cutout. | Cmn |

| ### Inherited functions |
|---|
| From [androidx.compose.ui.unit.Density](https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Density) |---|---|---| | `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp.https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Density#(androidx.compose.ui.unit.Dp).roundToPx()()` Convert `https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp` to `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` by rounding | Cmn | | `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/TextUnit.https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Density#(androidx.compose.ui.unit.TextUnit).roundToPx()()` Convert Sp to `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` by rounding | Cmn | | `open https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp` | `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html.https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Density#(kotlin.Int).toDp()()` Convert an `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` pixel value to `https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp`. | Cmn | | `open https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp` | `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html.https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Density#(kotlin.Float).toDp()()` Convert a `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html` pixel value to a Dp | Cmn | | `open https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/DpSize` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/geometry/Size.https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Density#(androidx.compose.ui.geometry.Size).toDpSize()()` Convert a `https://developer.android.com/reference/kotlin/androidx/compose/ui/geometry/Size` to a `https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/DpSize`. | Cmn | | `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp.https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Density#(androidx.compose.ui.unit.Dp).toPx()()` Convert `https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp` to pixels. | Cmn | | `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/TextUnit.https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Density#(androidx.compose.ui.unit.TextUnit).toPx()()` Convert Sp to pixels. | Cmn | | `open https://developer.android.com/reference/kotlin/androidx/compose/ui/geometry/Rect` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/DpRect.https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Density#(androidx.compose.ui.unit.DpRect).toRect()()` Convert a `https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/DpRect` to a `https://developer.android.com/reference/kotlin/androidx/compose/ui/geometry/Rect`. | Cmn | | `open https://developer.android.com/reference/kotlin/androidx/compose/ui/geometry/Size` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/DpSize.https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Density#(androidx.compose.ui.unit.DpSize).toSize()()` Convert a `https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/DpSize` to a `https://developer.android.com/reference/kotlin/androidx/compose/ui/geometry/Size`. | Cmn | | `open https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/TextUnit` | `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html.https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Density#(kotlin.Int).toSp()()` Convert an `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` pixel value to Sp. | Cmn | | `open https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/TextUnit` | `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html.https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Density#(kotlin.Float).toSp()()` Convert a `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html` pixel value to a Sp | Cmn | |
| From [androidx.compose.ui.unit.FontScaling](https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/FontScaling) |---|---|---| | `abstract https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/TextUnit.https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/FontScaling#(androidx.compose.ui.unit.TextUnit).toDp()()` Convert Sp to `https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp`. | Cmn | | `abstract https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/TextUnit` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp.https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/FontScaling#(androidx.compose.ui.unit.Dp).toSp()()` Convert `https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp` to Sp. | Cmn | |

## Public constructors

### PlacementScope

Cmn Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.0.0)

```
PlacementScope()
```

## Public functions

### Ruler.current

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/Placeable.kt+function:current) Added in [1.7.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.7.0)

```
open fun Ruler.current(defaultValue: Float): Float
```

Returns the value for this `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Ruler` or `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Ruler).current(kotlin.Float)` if it wasn't `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/RulerScope#(androidx.compose.ui.layout.Ruler).provides(kotlin.Float)`. `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Ruler` values are unavailable while calculating `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/AlignmentLine`s.

```kotlin
import androidx.compose.foundation.layout.Box
import androidx.compose.ui.Modifier
import androidx.compose.ui.layout.layout
import androidx.compose.ui.unit.Constraints

Box(
    Modifier.layout { measurable, constraints ->
        if (!constraints.hasBoundedHeight || !constraints.hasBoundedWidth) {
            // Can't use the ruler. We don't know our size
            val placeable = measurable.measure(constraints)
            layout(placeable.width, placeable.height) { placeable.place(0, 0) }
        } else {
            // Use the entire space available
            layout(constraints.maxWidth, constraints.maxHeight) {
                // Child is measured to fit above the IME
                val imePosition = SafeBottomRuler.current(-1f)
                val maxHeight: Int
                if (imePosition <= 0 || imePosition >= constraints.maxHeight) {
                    // IME ruler is outside the bounds of this layout
                    maxHeight = constraints.maxHeight
                } else {
                    maxHeight = imePosition.roundToInt()
                }
                val minHeight = constraints.minHeight.coerceAtMost(maxHeight)
                val childConstraints =
                    constraints.copy(minHeight = minHeight, maxHeight = maxHeight)
                val placeable = measurable.measure(childConstraints)
                placeable.place(0, 0)
            }
        }
    },
    content = content,
)
```

### Placeable.place

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/Placeable.kt+function:place) Added in [1.10.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.10.0)

```
fun Placeable.place(position: IntOffset, zIndex: Float = 0.0f): Unit
```

Place a `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable` at `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).place(androidx.compose.ui.unit.IntOffset,kotlin.Float)` in its parent's coordinate system. Unlike `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeRelative(androidx.compose.ui.unit.IntOffset,kotlin.Float)`, the given `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).place(androidx.compose.ui.unit.IntOffset,kotlin.Float)` will not implicitly react in RTL layout direction contexts.

| Parameters |
|---|---|
| `position: https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/IntOffset` | position in the parent's coordinate system. |
| `zIndex: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html = 0.0f` | controls the drawing order for the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable`. A `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable` with larger `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).place(androidx.compose.ui.unit.IntOffset,kotlin.Float)` will be drawn on top of all the children with smaller `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).place(androidx.compose.ui.unit.IntOffset,kotlin.Float)`. When children have the same `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).place(androidx.compose.ui.unit.IntOffset,kotlin.Float)` the order in which the items were placed is used. |

### Placeable.place

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/Placeable.kt+function:place) Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.0.0)

```
fun Placeable.place(x: Int, y: Int, zIndex: Float = 0.0f): Unit
```

Place a `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable` at `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).place(kotlin.Int,kotlin.Int,kotlin.Float)`, `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).place(kotlin.Int,kotlin.Int,kotlin.Float)` in its parent's coordinate system. Unlike `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeRelative(androidx.compose.ui.unit.IntOffset,kotlin.Float)`, the given position will not implicitly react in RTL layout direction contexts.

| Parameters |
|---|---|
| `x: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | x coordinate in the parent's coordinate system. |
| `y: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | y coordinate in the parent's coordinate system. |
| `zIndex: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html = 0.0f` | controls the drawing order for the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable`. A `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable` with larger `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).place(kotlin.Int,kotlin.Int,kotlin.Float)` will be drawn on top of all the children with smaller `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).place(kotlin.Int,kotlin.Int,kotlin.Float)`. When children have the same `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).place(kotlin.Int,kotlin.Int,kotlin.Float)` the order in which the items were placed is used. |

### Placeable.placeRelative

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/Placeable.kt+function:placeRelative) Added in [1.10.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.10.0)

```
fun Placeable.placeRelative(position: IntOffset, zIndex: Float = 0.0f): Unit
```

Place a `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable` at `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeRelative(androidx.compose.ui.unit.IntOffset,kotlin.Float)` in its parent's coordinate system. If the layout direction is right-to-left, the given `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeRelative(androidx.compose.ui.unit.IntOffset,kotlin.Float)` will be horizontally mirrored so that the position of the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable` implicitly reacts to RTL layout direction contexts. If this method is used outside the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/MeasureScope#layout(kotlin.Int,kotlin.Int,kotlin.collections.Map,kotlin.Function1)` positioning block, the automatic position mirroring will not happen and the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable` will be placed at the given `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeRelative(androidx.compose.ui.unit.IntOffset,kotlin.Float)`, similar to the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).place(kotlin.Int,kotlin.Int,kotlin.Float)` method.

| Parameters |
|---|---|
| `position: https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/IntOffset` | position in the parent's coordinate system. |
| `zIndex: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html = 0.0f` | controls the drawing order for the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable`. A `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable` with larger `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeRelative(androidx.compose.ui.unit.IntOffset,kotlin.Float)` will be drawn on top of all the children with smaller `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeRelative(androidx.compose.ui.unit.IntOffset,kotlin.Float)`. When children have the same `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeRelative(androidx.compose.ui.unit.IntOffset,kotlin.Float)` the order in which the items were placed is used. |

### Placeable.placeRelative

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/Placeable.kt+function:placeRelative) Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.0.0)

```
fun Placeable.placeRelative(x: Int, y: Int, zIndex: Float = 0.0f): Unit
```

Place a `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable` at `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeRelative(kotlin.Int,kotlin.Int,kotlin.Float)`, `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeRelative(kotlin.Int,kotlin.Int,kotlin.Float)` in its parent's coordinate system. If the layout direction is right-to-left, the given position will be horizontally mirrored so that the position of the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable` implicitly reacts to RTL layout direction contexts. If this method is used outside the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/MeasureScope#layout(kotlin.Int,kotlin.Int,kotlin.collections.Map,kotlin.Function1)` positioning block, the automatic position mirroring will not happen and the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable` will be placed at the given position, similar to the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).place(kotlin.Int,kotlin.Int,kotlin.Float)` method.

| Parameters |
|---|---|
| `x: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | x coordinate in the parent's coordinate system. |
| `y: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | y coordinate in the parent's coordinate system. |
| `zIndex: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html = 0.0f` | controls the drawing order for the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable`. A `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable` with larger `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeRelative(kotlin.Int,kotlin.Int,kotlin.Float)` will be drawn on top of all the children with smaller `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeRelative(kotlin.Int,kotlin.Int,kotlin.Float)`. When children have the same `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeRelative(kotlin.Int,kotlin.Int,kotlin.Float)` the order in which the items were placed is used. |

### Placeable.placeRelativeWithLayer

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/Placeable.kt+function:placeRelativeWithLayer) Added in [1.10.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.10.0)

```
fun Placeable.placeRelativeWithLayer(
    position: IntOffset,
    layer: GraphicsLayer,
    zIndex: Float = 0.0f
): Unit
```

Place a `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable` at `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeRelativeWithLayer(androidx.compose.ui.unit.IntOffset,androidx.compose.ui.graphics.layer.GraphicsLayer,kotlin.Float)` in its parent's coordinate system with an introduced graphic layer. If the layout direction is right-to-left, the given `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeRelativeWithLayer(androidx.compose.ui.unit.IntOffset,androidx.compose.ui.graphics.layer.GraphicsLayer,kotlin.Float)` will be horizontally mirrored so that the position of the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable` implicitly reacts to RTL layout direction contexts. If this method is used outside the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/MeasureScope#layout(kotlin.Int,kotlin.Int,kotlin.collections.Map,kotlin.Function1)` positioning block, the automatic position mirroring will not happen and the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable` will be placed at the given `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeRelativeWithLayer(androidx.compose.ui.unit.IntOffset,androidx.compose.ui.graphics.layer.GraphicsLayer,kotlin.Float)`, similar to the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).place(kotlin.Int,kotlin.Int,kotlin.Float)` method.

| Parameters |
|---|---|
| `position: https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/IntOffset` | position in the parent's coordinate system. |
| `layer: https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/layer/GraphicsLayer` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/layer/GraphicsLayer` to place this placeable with. If the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable` will be placed with a new `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeRelativeWithLayer(androidx.compose.ui.unit.IntOffset,androidx.compose.ui.graphics.layer.GraphicsLayer,kotlin.Float)` next time only the graphic layer will be moved without requiring to redrawn the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable` content. |
| `zIndex: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html = 0.0f` | controls the drawing order for the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable`. A `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable` with larger `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeRelativeWithLayer(androidx.compose.ui.unit.IntOffset,androidx.compose.ui.graphics.layer.GraphicsLayer,kotlin.Float)` will be drawn on top of all the children with smaller `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeRelativeWithLayer(androidx.compose.ui.unit.IntOffset,androidx.compose.ui.graphics.layer.GraphicsLayer,kotlin.Float)`. When children have the same `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeRelativeWithLayer(androidx.compose.ui.unit.IntOffset,androidx.compose.ui.graphics.layer.GraphicsLayer,kotlin.Float)` the order in which the items were placed is used. |

### Placeable.placeRelativeWithLayer

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/Placeable.kt+function:placeRelativeWithLayer)

```
fun Placeable.placeRelativeWithLayer(
    position: IntOffset,
    zIndex: Float = 0.0f,
    layerBlock: GraphicsLayerScope.() -> Unit = DefaultLayerBlock
): Unit
```

Place a `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable` at `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeRelativeWithLayer(androidx.compose.ui.unit.IntOffset,kotlin.Float,kotlin.Function1)` in its parent's coordinate system with an introduced graphic layer. If the layout direction is right-to-left, the given `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeRelativeWithLayer(androidx.compose.ui.unit.IntOffset,kotlin.Float,kotlin.Function1)` will be horizontally mirrored so that the position of the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable` implicitly reacts to RTL layout direction contexts. If this method is used outside the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/MeasureScope#layout(kotlin.Int,kotlin.Int,kotlin.collections.Map,kotlin.Function1)` positioning block, the automatic position mirroring will not happen and the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable` will be placed at the given `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeRelativeWithLayer(androidx.compose.ui.unit.IntOffset,kotlin.Float,kotlin.Function1)`, similar to the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).place(kotlin.Int,kotlin.Int,kotlin.Float)` method.

| Parameters |
|---|---|
| `position: https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/IntOffset` | position in the parent's coordinate system. |
| `zIndex: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html = 0.0f` | controls the drawing order for the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable`. A `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable` with larger `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeRelativeWithLayer(androidx.compose.ui.unit.IntOffset,kotlin.Float,kotlin.Function1)` will be drawn on top of all the children with smaller `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeRelativeWithLayer(androidx.compose.ui.unit.IntOffset,kotlin.Float,kotlin.Function1)`. When children have the same `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeRelativeWithLayer(androidx.compose.ui.unit.IntOffset,kotlin.Float,kotlin.Function1)` the order in which the items were placed is used. |
| `layerBlock: https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/GraphicsLayerScope.() -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html = DefaultLayerBlock` | You can configure any layer property available on `https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/GraphicsLayerScope` via this block. If the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable` will be placed with a new `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeRelativeWithLayer(androidx.compose.ui.unit.IntOffset,kotlin.Float,kotlin.Function1)` next time only the graphic layer will be moved without requiring to redrawn the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable` content. |

### Placeable.placeRelativeWithLayer

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/Placeable.kt+function:placeRelativeWithLayer) Added in [1.7.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.7.0)

```
fun Placeable.placeRelativeWithLayer(
    x: Int,
    y: Int,
    layer: GraphicsLayer,
    zIndex: Float = 0.0f
): Unit
```

Place a `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable` at `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeRelativeWithLayer(kotlin.Int,kotlin.Int,androidx.compose.ui.graphics.layer.GraphicsLayer,kotlin.Float)`, `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeRelativeWithLayer(kotlin.Int,kotlin.Int,androidx.compose.ui.graphics.layer.GraphicsLayer,kotlin.Float)` in its parent's coordinate system with an introduced graphic layer. If the layout direction is right-to-left, the given position will be horizontally mirrored so that the position of the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable` implicitly reacts to RTL layout direction contexts. If this method is used outside the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/MeasureScope#layout(kotlin.Int,kotlin.Int,kotlin.collections.Map,kotlin.Function1)` positioning block, the automatic position mirroring will not happen and the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable` will be placed at the given position, similar to the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).place(kotlin.Int,kotlin.Int,kotlin.Float)` method.

| Parameters |
|---|---|
| `x: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | x coordinate in the parent's coordinate system. |
| `y: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | y coordinate in the parent's coordinate system. |
| `layer: https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/layer/GraphicsLayer` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/layer/GraphicsLayer` to place this placeable with. If the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable` will be placed with a new `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeRelativeWithLayer(kotlin.Int,kotlin.Int,androidx.compose.ui.graphics.layer.GraphicsLayer,kotlin.Float)` or `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeRelativeWithLayer(kotlin.Int,kotlin.Int,androidx.compose.ui.graphics.layer.GraphicsLayer,kotlin.Float)` next time only the graphic layer will be moved without requiring to redrawn the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable` content. |
| `zIndex: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html = 0.0f` | controls the drawing order for the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable`. A `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable` with larger `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeRelativeWithLayer(kotlin.Int,kotlin.Int,androidx.compose.ui.graphics.layer.GraphicsLayer,kotlin.Float)` will be drawn on top of all the children with smaller `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeRelativeWithLayer(kotlin.Int,kotlin.Int,androidx.compose.ui.graphics.layer.GraphicsLayer,kotlin.Float)`. When children have the same `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeRelativeWithLayer(kotlin.Int,kotlin.Int,androidx.compose.ui.graphics.layer.GraphicsLayer,kotlin.Float)` the order in which the items were placed is used. |

### Placeable.placeRelativeWithLayer

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/Placeable.kt+function:placeRelativeWithLayer) Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.0.0)

```
fun Placeable.placeRelativeWithLayer(
    x: Int,
    y: Int,
    zIndex: Float = 0.0f,
    layerBlock: GraphicsLayerScope.() -> Unit = DefaultLayerBlock
): Unit
```

Place a `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable` at `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeRelativeWithLayer(kotlin.Int,kotlin.Int,kotlin.Float,kotlin.Function1)`, `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeRelativeWithLayer(kotlin.Int,kotlin.Int,kotlin.Float,kotlin.Function1)` in its parent's coordinate system with an introduced graphic layer. If the layout direction is right-to-left, the given position will be horizontally mirrored so that the position of the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable` implicitly reacts to RTL layout direction contexts. If this method is used outside the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/MeasureScope#layout(kotlin.Int,kotlin.Int,kotlin.collections.Map,kotlin.Function1)` positioning block, the automatic position mirroring will not happen and the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable` will be placed at the given position, similar to the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).place(kotlin.Int,kotlin.Int,kotlin.Float)` method.

| Parameters |
|---|---|
| `x: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | x coordinate in the parent's coordinate system. |
| `y: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | y coordinate in the parent's coordinate system. |
| `zIndex: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html = 0.0f` | controls the drawing order for the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable`. A `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable` with larger `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeRelativeWithLayer(kotlin.Int,kotlin.Int,kotlin.Float,kotlin.Function1)` will be drawn on top of all the children with smaller `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeRelativeWithLayer(kotlin.Int,kotlin.Int,kotlin.Float,kotlin.Function1)`. When children have the same `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeRelativeWithLayer(kotlin.Int,kotlin.Int,kotlin.Float,kotlin.Function1)` the order in which the items were placed is used. |
| `layerBlock: https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/GraphicsLayerScope.() -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html = DefaultLayerBlock` | You can configure any layer property available on `https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/GraphicsLayerScope` via this block. If the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable` will be placed with a new `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeRelativeWithLayer(kotlin.Int,kotlin.Int,kotlin.Float,kotlin.Function1)` or `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeRelativeWithLayer(kotlin.Int,kotlin.Int,kotlin.Float,kotlin.Function1)` next time only the graphic layer will be moved without requiring to redrawn the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable` content. |

### Placeable.placeWithLayer

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/Placeable.kt+function:placeWithLayer) Added in [1.10.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.10.0)

```
fun Placeable.placeWithLayer(
    position: IntOffset,
    layer: GraphicsLayer,
    zIndex: Float = 0.0f
): Unit
```

Place a `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable` at `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeWithLayer(androidx.compose.ui.unit.IntOffset,androidx.compose.ui.graphics.layer.GraphicsLayer,kotlin.Float)` in its parent's coordinate system with an introduced graphic layer. Unlike `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeRelative(androidx.compose.ui.unit.IntOffset,kotlin.Float)`, the given `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeWithLayer(androidx.compose.ui.unit.IntOffset,androidx.compose.ui.graphics.layer.GraphicsLayer,kotlin.Float)` will not implicitly react in RTL layout direction contexts.

| Parameters |
|---|---|
| `position: https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/IntOffset` | position in the parent's coordinate system. |
| `layer: https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/layer/GraphicsLayer` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/layer/GraphicsLayer` to place this placeable with. If the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable` will be placed with a new `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeWithLayer(androidx.compose.ui.unit.IntOffset,androidx.compose.ui.graphics.layer.GraphicsLayer,kotlin.Float)` next time only the graphic layer will be moved without requiring to redrawn the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable` content. |
| `zIndex: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html = 0.0f` | controls the drawing order for the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable`. A `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable` with larger `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeWithLayer(androidx.compose.ui.unit.IntOffset,androidx.compose.ui.graphics.layer.GraphicsLayer,kotlin.Float)` will be drawn on top of all the children with smaller `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeWithLayer(androidx.compose.ui.unit.IntOffset,androidx.compose.ui.graphics.layer.GraphicsLayer,kotlin.Float)`. When children have the same `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeWithLayer(androidx.compose.ui.unit.IntOffset,androidx.compose.ui.graphics.layer.GraphicsLayer,kotlin.Float)` the order in which the items were placed is used. |

### Placeable.placeWithLayer

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/Placeable.kt+function:placeWithLayer)

```
fun Placeable.placeWithLayer(
    position: IntOffset,
    zIndex: Float = 0.0f,
    layerBlock: GraphicsLayerScope.() -> Unit = DefaultLayerBlock
): Unit
```

Place a `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable` at `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeWithLayer(androidx.compose.ui.unit.IntOffset,kotlin.Float,kotlin.Function1)` in its parent's coordinate system with an introduced graphic layer. Unlike `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeRelative(androidx.compose.ui.unit.IntOffset,kotlin.Float)`, the given `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeWithLayer(androidx.compose.ui.unit.IntOffset,kotlin.Float,kotlin.Function1)` will not implicitly react in RTL layout direction contexts.

| Parameters |
|---|---|
| `position: https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/IntOffset` | position in the parent's coordinate system. |
| `zIndex: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html = 0.0f` | controls the drawing order for the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable`. A `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable` with larger `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeWithLayer(androidx.compose.ui.unit.IntOffset,kotlin.Float,kotlin.Function1)` will be drawn on top of all the children with smaller `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeWithLayer(androidx.compose.ui.unit.IntOffset,kotlin.Float,kotlin.Function1)`. When children have the same `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeWithLayer(androidx.compose.ui.unit.IntOffset,kotlin.Float,kotlin.Function1)` the order in which the items were placed is used. |
| `layerBlock: https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/GraphicsLayerScope.() -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html = DefaultLayerBlock` | You can configure any layer property available on `https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/GraphicsLayerScope` via this block. If the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable` will be placed with a new `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeWithLayer(androidx.compose.ui.unit.IntOffset,kotlin.Float,kotlin.Function1)` next time only the graphic layer will be moved without requiring to redrawn the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable` content. |

### Placeable.placeWithLayer

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/Placeable.kt+function:placeWithLayer) Added in [1.7.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.7.0)

```
fun Placeable.placeWithLayer(
    x: Int,
    y: Int,
    layer: GraphicsLayer,
    zIndex: Float = 0.0f
): Unit
```

Place a `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable` at `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeWithLayer(kotlin.Int,kotlin.Int,androidx.compose.ui.graphics.layer.GraphicsLayer,kotlin.Float)`, `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeWithLayer(kotlin.Int,kotlin.Int,androidx.compose.ui.graphics.layer.GraphicsLayer,kotlin.Float)` in its parent's coordinate system with an introduced graphic layer. Unlike `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeRelative(androidx.compose.ui.unit.IntOffset,kotlin.Float)`, the given position will not implicitly react in RTL layout direction contexts.

| Parameters |
|---|---|
| `x: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | x coordinate in the parent's coordinate system. |
| `y: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | y coordinate in the parent's coordinate system. |
| `layer: https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/layer/GraphicsLayer` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/layer/GraphicsLayer` to place this placeable with. If the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable` will be placed with a new `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeWithLayer(kotlin.Int,kotlin.Int,androidx.compose.ui.graphics.layer.GraphicsLayer,kotlin.Float)` or `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeWithLayer(kotlin.Int,kotlin.Int,androidx.compose.ui.graphics.layer.GraphicsLayer,kotlin.Float)` next time only the graphic layer will be moved without requiring to redrawn the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable` content. |
| `zIndex: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html = 0.0f` | controls the drawing order for the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable`. A `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable` with larger `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeWithLayer(kotlin.Int,kotlin.Int,androidx.compose.ui.graphics.layer.GraphicsLayer,kotlin.Float)` will be drawn on top of all the children with smaller `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeWithLayer(kotlin.Int,kotlin.Int,androidx.compose.ui.graphics.layer.GraphicsLayer,kotlin.Float)`. When children have the same `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeWithLayer(kotlin.Int,kotlin.Int,androidx.compose.ui.graphics.layer.GraphicsLayer,kotlin.Float)` the order in which the items were placed is used. |

### Placeable.placeWithLayer

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/Placeable.kt+function:placeWithLayer) Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.0.0)

```
fun Placeable.placeWithLayer(
    x: Int,
    y: Int,
    zIndex: Float = 0.0f,
    layerBlock: GraphicsLayerScope.() -> Unit = DefaultLayerBlock
): Unit
```

Place a `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable` at `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeWithLayer(kotlin.Int,kotlin.Int,kotlin.Float,kotlin.Function1)`, `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeWithLayer(kotlin.Int,kotlin.Int,kotlin.Float,kotlin.Function1)` in its parent's coordinate system with an introduced graphic layer. Unlike `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeRelative(androidx.compose.ui.unit.IntOffset,kotlin.Float)`, the given position will not implicitly react in RTL layout direction contexts.

| Parameters |
|---|---|
| `x: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | x coordinate in the parent's coordinate system. |
| `y: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | y coordinate in the parent's coordinate system. |
| `zIndex: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html = 0.0f` | controls the drawing order for the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable`. A `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable` with larger `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeWithLayer(kotlin.Int,kotlin.Int,kotlin.Float,kotlin.Function1)` will be drawn on top of all the children with smaller `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeWithLayer(kotlin.Int,kotlin.Int,kotlin.Float,kotlin.Function1)`. When children have the same `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeWithLayer(kotlin.Int,kotlin.Int,kotlin.Float,kotlin.Function1)` the order in which the items were placed is used. |
| `layerBlock: https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/GraphicsLayerScope.() -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html = DefaultLayerBlock` | You can configure any layer property available on `https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/GraphicsLayerScope` via this block. If the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable` will be placed with a new `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeWithLayer(kotlin.Int,kotlin.Int,kotlin.Float,kotlin.Function1)` or `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Placeable).placeWithLayer(kotlin.Int,kotlin.Int,kotlin.Float,kotlin.Function1)` next time only the graphic layer will be moved without requiring to redrawn the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable` content. |

### withMotionFrameOfReferencePlacement

Cmn Added in [1.7.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.7.0)

```
fun withMotionFrameOfReferencePlacement(block: Placeable.PlacementScope.() -> Unit): Unit
```

Placement done under `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#withMotionFrameOfReferencePlacement(kotlin.Function1)`, will have their `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable` placed on the same frame of reference as the current layout.

In `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/LayoutCoordinates`, this means that the offset introduced under `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#withMotionFrameOfReferencePlacement(kotlin.Function1)` may be excluded when calculating positions by passing `includeMotionFrameOfReference = false` in `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/LayoutCoordinates#localPositionOf(androidx.compose.ui.layout.LayoutCoordinates,androidx.compose.ui.geometry.Offset)`.

Excluding the position set by certain layouts can be helpful to trigger lookahead based animation when intended. The typical case are layouts that change frequently due to a provided value, like `https://developer.android.com/reference/kotlin/androidx/compose/foundation/verticalScroll.modifier#(androidx.compose.ui.Modifier).verticalScroll(androidx.compose.foundation.ScrollState,kotlin.Boolean,androidx.compose.foundation.gestures.FlingBehavior,kotlin.Boolean)`.

## Public properties

### coordinates

Cmn Added in [1.3.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.3.0)

```
open val coordinates: LayoutCoordinates?
```

The `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/LayoutCoordinates` of this layout, if known or `null` if the layout hasn't been placed yet. `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#coordinates()` will be `null` when determining alignment lines, preventing alignment lines from depending on absolute coordinates.

When `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#coordinates()` is `null`, there will always be a follow-up placement call in which `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#coordinates()` is not-`null`.

If you read a position from the coordinates during the placement block the block will be automatically re-executed when the parent layout changes a position. If you don't read it the placement block execution can be skipped as an optimization.

```kotlin
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.geometry.Offset
import androidx.compose.ui.layout.Layout
import androidx.compose.ui.layout.Placeable
import androidx.compose.ui.platform.LocalView
import androidx.compose.ui.unit.Constraints
import androidx.compose.ui.unit.IntOffset
import androidx.compose.ui.unit.round

// Layout so that the first item consumes to half of the width of the screen, if possible.
// The remainder of the layouts are positioned horizontally in the remaining space.
@Composable
fun FirstItemHalf(modifier: Modifier = Modifier, content: @Composable () -> Unit) {
    val view = LocalView.current

    Layout(
        content = content,
        modifier = modifier,
        measurePolicy = { measurables, constraints ->
            var width = constraints.minWidth
            var height = constraints.minHeight
            // If this doesn't have a fixed size, just layout horizontally
            var placeables: List<Placeable>? = null
            if (measurables.isNotEmpty()) {
                if (constraints.hasBoundedWidth && constraints.hasBoundedHeight) {
                    width = constraints.maxWidth
                    height = constraints.maxHeight
                } else {
                    placeables = measurables.map { it.measure(constraints) }
                    width = placeables.sumOf { it.width }
                    height = placeables.maxOf { it.height }
                }
            }
            layout(width, height) {
                if (placeables != null) {
                    var x = 0
                    placeables.forEach {
                        it.placeRelative(x, 0)
                        x += it.width
                    }
                } else if (measurables.isNotEmpty() && coordinates != null) {
                    val coordinates = coordinates!!
                    val positionInWindow = IntArray(2)
                    view.getLocationOnScreen(positionInWindow)
                    val topLeft =
                        coordinates.localToRoot(Offset.Zero).round() +
                            IntOffset(positionInWindow[0], positionInWindow[1])
                    val displayWidth = view.resources.displayMetrics.widthPixels
                    val halfWay = displayWidth / 2

                    val c0 =
                        if (topLeft.x < halfWay) {
                            // The first measurable should fit to half way across
                            Constraints.fixed(halfWay - topLeft.x, height)
                        } else {
                            // The first is already past the half way, so just divide it evenly
                            val measureWidth = width / measurables.size
                            Constraints.fixed(measureWidth, height)
                        }
                    val p0 = measurables[0].measure(c0)
                    p0.place(0, 0)

                    // The rest just fit in the remainder of the space
                    var x = p0.width
                    for (i in 1..measurables.lastIndex) {
                        val measureWidth = (width - x) / (measurables.size - i)
                        val p = measurables[i].measure(Constraints.fixed(measureWidth, height))
                        p.place(x, 0)
                        x += p.width
                    }
                }
            }
        },
    )
}
```

### density

Cmn Added in [1.9.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.9.0)

```
open val density: Float
```

The logical density of the display. This is a scaling factor for the `https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp` unit.

### fontScale

Cmn Added in [1.9.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.9.0)

```
open val fontScale: Float
```

Current user preference for the scaling factor for fonts.

## Protected properties

### parentLayoutDirection

Cmn Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.0.0)

```
protected abstract val parentLayoutDirection: LayoutDirection
```

Keeps the layout direction of the parent of the placeable that is being places using current `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope`. Used to support automatic position mirroring for convenient RTL support in custom layouts.

### parentWidth

Cmn Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.0.0)

```
protected abstract val parentWidth: Int
```

Keeps the parent layout node's width to make the automatic mirroring of the position in RTL environment. If the value is zero, than the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable` will be be placed to the original position (position will not be mirrored).

## Extension functions

### Placeable.PlacementScope.getDisplayCutoutBounds

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/WindowInsetsRulers.kt+function:getDisplayCutoutBounds)

```
fun Placeable.PlacementScope.getDisplayCutoutBounds(): List<RectRulers>
```

Returns a List of `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/RectRulers`, one `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/RectRulers` for each display cutout. Each `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/RectRulers` provides values for the bounds of the display cutout. `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/WindowInsetsRulers#DisplayCutout()` provides the safe inset values for content avoiding all display cutouts.