# SubspaceLayout

## Functions summary

|---|---|
| `inline https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `@https://developer.android.com/reference/kotlin/androidx/xr/compose/subspace/SubspaceComposable @https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable https://developer.android.com/reference/kotlin/androidx/xr/compose/subspace/layout/SubspaceLayout.composable#SubspaceLayout(androidx.xr.compose.subspace.layout.SubspaceModifier,androidx.xr.compose.subspace.layout.SubspaceMeasurePolicy)( modifier: https://developer.android.com/reference/kotlin/androidx/xr/compose/subspace/layout/SubspaceModifier, measurePolicy: https://developer.android.com/reference/kotlin/androidx/xr/compose/subspace/layout/SubspaceMeasurePolicy )` `https://developer.android.com/reference/kotlin/androidx/xr/compose/subspace/layout/SubspaceLayout.composable#SubspaceLayout(androidx.xr.compose.subspace.layout.SubspaceModifier,androidx.xr.compose.subspace.layout.SubspaceMeasurePolicy)` is the main component for laying out leaf nodes with zero children. |
| `inline https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `@https://developer.android.com/reference/kotlin/androidx/xr/compose/subspace/SubspaceComposable @https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable https://developer.android.com/reference/kotlin/androidx/xr/compose/subspace/layout/SubspaceLayout.composable#SubspaceLayout(kotlin.Function0,androidx.xr.compose.subspace.layout.SubspaceModifier,kotlin.String,androidx.xr.compose.subspace.layout.SubspaceMeasurePolicy)( crossinline content: @https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable @https://developer.android.com/reference/kotlin/androidx/xr/compose/subspace/SubspaceComposable () -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html, modifier: https://developer.android.com/reference/kotlin/androidx/xr/compose/subspace/layout/SubspaceModifier, coreEntityName: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html, measurePolicy: https://developer.android.com/reference/kotlin/androidx/xr/compose/subspace/layout/SubspaceMeasurePolicy )` `https://developer.android.com/reference/kotlin/androidx/xr/compose/subspace/layout/SubspaceLayout.composable#SubspaceLayout(kotlin.Function0,androidx.xr.compose.subspace.layout.SubspaceModifier,kotlin.String,androidx.xr.compose.subspace.layout.SubspaceMeasurePolicy)` is the main core component for layout. |

## Functions

### SubspaceLayout

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

```
@SubspaceComposable
@Composable
inline fun SubspaceLayout(
    modifier: SubspaceModifier = SubspaceModifier,
    measurePolicy: SubspaceMeasurePolicy
): Unit
```

`https://developer.android.com/reference/kotlin/androidx/xr/compose/subspace/layout/SubspaceLayout.composable#SubspaceLayout(androidx.xr.compose.subspace.layout.SubspaceModifier,androidx.xr.compose.subspace.layout.SubspaceMeasurePolicy)` is the main component for laying out leaf nodes with zero children.

The measurement, layout and intrinsic measurement behaviors of this layout will be defined by the `https://developer.android.com/reference/kotlin/androidx/xr/compose/subspace/layout/SubspaceMeasurePolicy` instance. See `https://developer.android.com/reference/kotlin/androidx/xr/compose/subspace/layout/SubspaceMeasurePolicy` for more details.

```kotlin
import androidx.xr.compose.subspace.layout.SubspaceLayout
import androidx.xr.compose.subspace.layout.SubspaceMeasurePolicy
import androidx.xr.compose.subspace.layout.SubspaceModifier
import androidx.xr.compose.subspace.semantics.testTag

SubspaceLayout(
    modifier = SubspaceModifier.testTag("exactSizeSpacer"),
    measurePolicy =
        SubspaceMeasurePolicy { _, _ -> layout(size.width, size.height, size.depth) {} },
)
```

| Parameters |
|---|---|
| `modifier: https://developer.android.com/reference/kotlin/androidx/xr/compose/subspace/layout/SubspaceModifier = SubspaceModifier` | SubspaceModifier to apply during layout. |
| `measurePolicy: https://developer.android.com/reference/kotlin/androidx/xr/compose/subspace/layout/SubspaceMeasurePolicy` | a policy defining the measurement and positioning of the layout. |

### SubspaceLayout

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

```
@SubspaceComposable
@Composable
inline fun SubspaceLayout(
    crossinline content: @Composable @SubspaceComposable () -> Unit,
    modifier: SubspaceModifier = SubspaceModifier,
    coreEntityName: String = "Entity",
    measurePolicy: SubspaceMeasurePolicy
): Unit
```

`https://developer.android.com/reference/kotlin/androidx/xr/compose/subspace/layout/SubspaceLayout.composable#SubspaceLayout(kotlin.Function0,androidx.xr.compose.subspace.layout.SubspaceModifier,kotlin.String,androidx.xr.compose.subspace.layout.SubspaceMeasurePolicy)` is the main core component for layout. It can be used to measure and position zero or more layout children.

The measurement, layout and intrinsic measurement behaviors of this layout will be defined by the `https://developer.android.com/reference/kotlin/androidx/xr/compose/subspace/layout/SubspaceMeasurePolicy` instance. See `https://developer.android.com/reference/kotlin/androidx/xr/compose/subspace/layout/SubspaceMeasurePolicy` for more details.

```kotlin
import androidx.xr.compose.subspace.layout.SubspaceLayout
import androidx.xr.runtime.math.Pose

SubspaceLayout(content = content, modifier = modifier) { measurables, constraints ->
    val placeables = measurables.map { it.measure(constraints) }
    layout(constraints.maxWidth, constraints.maxHeight, constraints.maxDepth) {
        placeables.forEach { it.place(Pose.Identity) }
    }
}
```

```kotlin
import androidx.xr.compose.subspace.layout.SubspaceLayout
import androidx.xr.compose.subspace.layout.SubspaceMeasurePolicy
import androidx.xr.runtime.math.Pose

SubspaceLayout(
    content = content,
    modifier = modifier,
    coreEntityName = "MyCustomLayoutEntity",
    measurePolicy =
        SubspaceMeasurePolicy { measurables, constraints ->
            val placeables = measurables.map { it.measure(constraints) }
            layout(constraints.maxWidth, constraints.maxHeight, constraints.maxDepth) {
                placeables.forEach { it.place(Pose.Identity) }
            }
        },
)
```

| Parameters |
|---|---|
| `crossinline content: @https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable @https://developer.android.com/reference/kotlin/androidx/xr/compose/subspace/SubspaceComposable () -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | the child composables to be laid out. |
| `modifier: https://developer.android.com/reference/kotlin/androidx/xr/compose/subspace/layout/SubspaceModifier = SubspaceModifier` | SubspaceModifier to apply during layout |
| `coreEntityName: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html = "Entity"` | A name for the underlying `https://developer.android.com/reference/kotlin/androidx/xr/scenecore/Entity` that is created to host the content of this layout. This name is used for debugging and identification purposes; it will appear in scene graph inspectors, making it easier to correlate this composable with its corresponding node in the 3D scene. |
| `measurePolicy: https://developer.android.com/reference/kotlin/androidx/xr/compose/subspace/layout/SubspaceMeasurePolicy` | a policy defining the measurement and positioning of the layout. |