gpt4 book ai didi

android - 如何在 Jetpack Compose 中将屏幕高度分成两半?

转载 作者:行者123 更新时间:2023-12-04 23:53:20 24 4
gpt4 key购买 nike

我想在 Jetpack Compose 中将屏幕水平分成两半,如下所示: enter image description here

    @Composable
fun Splash(alpha: Float) {
val configuration = LocalConfiguration.current
val screenHeight = configuration.screenHeightDp.dp
val screenWidth = configuration.screenWidthDp.dp
val composition by rememberLottieComposition(LottieCompositionSpec.RawRes(R.raw.cat2))
Box(
modifier = Modifier
.background(Blue)
.height(screenHeight / 2)
.padding(8.dp),
contentAlignment = Alignment.TopCenter
) {
Column() {
Text(text = "Example", fontSize = 44.sp)
}
}
Box(
modifier = Modifier
.background(Red)
.height(screenHeight / 2)
.padding(8.dp),
contentAlignment = Alignment.BottomCenter
){
Column {

Text(text = "Example", textAlign = TextAlign.End, color = Grey, fontSize = 12.sp)
}
}
}

我可以使用 dp 中的 LocalConfiguration.current 获得屏幕高度,并将我的顶框和底框对齐分别设置为 Alignment.TopCenter 和 Alignment.BottomCenter 但它不起作用。第二个框(红色的)停留在蓝色的上面。

最佳答案

您可以用 Column 包装您的 Boxes,并为每个框设置 Modifier.weight(1f) 以将它们设置为相同的高度

@Composable
fun Splash() {

Column(modifier =Modifier.fillMaxSize()) {
Box(
modifier = Modifier
.fillMaxWidth()
.background(Blue)
.weight(1f)
.padding(8.dp),
contentAlignment = Alignment.TopCenter
) {
Column() {
Text(text = "Example", fontSize = 44.sp)
}
}
Box(
modifier = Modifier
.fillMaxWidth()
.background(Red)
.weight(1f)
.padding(8.dp),
contentAlignment = Alignment.Center
){
Column {

Text(text = "Example", textAlign = TextAlign.End, color = DarkGray, fontSize = 12.sp)
}
}
}
}

或用返回 ContraintsmaxWidthmaxHeightBoxWithConstraints 包装并使用 Modifier。对齐 到一个Box 到顶部,另一个到底部。 BoxWithConstraints 可用于获取测量参数并将其设置为子修饰符。

@Composable
fun Splash2() {
BoxWithConstraints(modifier = Modifier.fillMaxSize()) {
Box(
modifier = Modifier
.fillMaxWidth()
.background(Blue)
.height(maxHeight/2)
.align(Alignment.TopStart)
.padding(8.dp),
contentAlignment = Alignment.TopCenter
) {
Column() {
Text(text = "Example", fontSize = 44.sp)
}
}
Box(
modifier = Modifier
.fillMaxWidth()
.background(Red)
.align(Alignment.BottomStart)
.height(maxHeight/2)
.padding(8.dp),
contentAlignment = Alignment.Center
){
Column {

Text(text = "Example", textAlign = TextAlign.End, color = DarkGray, fontSize = 12.sp)
}
}
}
}

关于android - 如何在 Jetpack Compose 中将屏幕高度分成两半?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71009330/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com