在屏幕旋转时,将Composables与屏幕所有边缘对齐是一种常见需求。可以使用Modifier中的padding和fillMaxSize方法来实现此目的。以下是一个简单的示例:
@Composable fun ScreenContent() { Box(Modifier.padding(16.dp).fillMaxSize()) { // TODO: Composables } }
在此示例中,Box Composable有一个padding Modifier,并使用fillMaxSize方法扩展,以填充整个屏幕。填充使Composables从边缘向内缩进16dp。
为了保持这种对齐在旋转时不变,可以使用Modifier中的Layout方法,并依靠屏幕的高度和宽度进行配置。以下是一个简单的示例:
@Composable fun ScreenContent() { Layout( content = { // TODO: Composables }, modifier = Modifier.fillMaxSize() ) { measurables, constraints -> val placeables = measurables.map { measurable -> measurable.measure(constraints) }
layout(constraints.maxWidth, constraints.maxHeight) {
var yOffset = 0
var xOffset = 0
// Align Composables to the top
placeables.forEach { placeable ->
placeable.placeRelative(
x = xOffset,
y = yOffset
)
yOffset += placeable.height
}
// Align Composables to the bottom
/*placeables.forEach { placeable ->
placeable.placeRelative(
x = xOffset,
y = constraints.maxHeight - yOffset - placeable.height
)
yOffset += placeable.height
}*/
}
}
}
在此示例中,我们使用Layout Composable实现自定义布局,并使用placeRelative方法将Composables与屏幕顶部对齐。如果想在屏幕底部对齐,只需取消注释其中的代码,并反转
上一篇:Alignbuttontotextareacorner
下一篇:aligned_malloc() vs alignas() for Constant Buffers 对于常量缓冲区,aligned_malloc()与alignas()的比较