多形态设备
多形态设备 · 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 混用:
SubspaceModifier与Modifier不可混用。 - 面板离用户太近:降低可用性,注意深度层次。
- 内容盒外乱放:默认受推荐内容盒约束,别随意 override。
- alpha API 依赖设备:硬件能力、运行时会话与 API 兼容性必须按目标设备验证。
要点
Subspace建立空间环境;SpatialPanel装二维内容;SubspaceModifier空间布局。requiredSizeIn只在需要脱离推荐内容盒时使用。Orbiter放边缘控制项;SpatialRow/Column 做空间排列。- XR Compose 仍 alpha,按目标设备验证。