XR Compose:在 Subspace 中布置空间内容 · AndroidX 源码指南
AAndroidX 源码指南
多形态设备
多形态设备 · androidx.wear.compose

XR Compose:在 Subspace 中布置空间内容Wear 1.7.0-alpha07

区分普通二维 Compose 与 SpatialPanel、SubspaceModifier 构成的三维布局树。

最后更新 2026-08-01

复制即用

@Composable
fun SpatialContent() {
    Subspace {
        SpatialPanel(
            modifier = SubspaceModifier.fillMaxSize(),
        ) {
            Text("空间面板中的二维 Compose 内容")
        }
    }
}

二维与三维布局树

概念说明
Subspace建立空间 Compose 环境,默认受系统推荐内容盒约束
SpatialPanel把普通二维 Compose 内容放进一个空间面板
SubspaceModifier空间节点修饰符:宽、高、深度、位移、旋转
Orbiter把控制项放到二维面板边缘之外
SpatialRow / SpatialColumn空间排列

关键SubspaceModifier 不能与普通 Modifier 混用——它们属于不同的布局树。

自定义空间边界

Subspace {
    SpatialPanel(
        modifier = SubspaceModifier
            .requiredSizeIn(width = 1000.dp, height = 600.dp),
    ) { ... }
}

只有确实需要脱离推荐内容盒时才用 requiredSizeIn 自定义边界。

空间布局示例

@Composable
fun SpatialLayout() {
    Subspace {
        SpatialRow(modifier = SubspaceModifier.fillMaxSize()) {
            SpatialPanel(modifier = SubspaceModifier.width(200.dp)) {
                Button(onClick = {}) { Text("A") }
            }
            SpatialPanel(modifier = SubspaceModifier.width(200.dp)) {
                Button(onClick = {}) { Text("B") }
            }
        }
        Orbiter { FloatingControls() }
    }
}

常见陷阱

  • Modifier 混用SubspaceModifierModifier 不可混用。
  • 面板离用户太近:降低可用性,注意深度层次。
  • 内容盒外乱放:默认受推荐内容盒约束,别随意 override。
  • alpha API 依赖设备:硬件能力、运行时会话与 API 兼容性必须按目标设备验证。

要点

  • Subspace 建立空间环境;SpatialPanel 装二维内容;SubspaceModifier 空间布局。
  • requiredSizeIn 只在需要脱离推荐内容盒时使用。
  • Orbiter 放边缘控制项;SpatialRow/Column 做空间排列。
  • XR Compose 仍 alpha,按目标设备验证。

相关页面