SubspaceLayout

Functions summary

inline Unit

SubspaceLayout is the main component for laying out leaf nodes with zero children.

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

SubspaceLayout is the main core component for layout.

Functions

SubspaceLayout

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

SubspaceLayout 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 SubspaceMeasurePolicy instance. See SubspaceMeasurePolicy for more details.

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: SubspaceModifier = SubspaceModifier

SubspaceModifier to apply during layout.

measurePolicy: SubspaceMeasurePolicy

a policy defining the measurement and positioning of the layout.

SubspaceLayout

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

SubspaceLayout 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 SubspaceMeasurePolicy instance. See SubspaceMeasurePolicy for more details.

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) }
    }
}
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: @Composable @SubspaceComposable () -> Unit

the child composables to be laid out.

modifier: SubspaceModifier = SubspaceModifier

SubspaceModifier to apply during layout

coreEntityName: String = "Entity"

A name for the underlying androidx.xr.scenecore.GroupEntity 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: SubspaceMeasurePolicy

a policy defining the measurement and positioning of the layout.