android 如何设置脚手架构件的不固定高度

dauxcl2d  于 2022-11-03  发布在  Android
关注(0)|答案(2)|浏览(159)

有没有办法将Scaffold中的元素高度设置为完全相同?我希望顶栏和内容都占据屏幕高度的一半

Scaffold(
    topBar = {
             MyLargeTopAppBar(modifier = Modifier.height(1f))
    },
    content = {
            LazyColumn(modifier = Modifier.padding(it).height(1f)) {
                ...
            }
    },
    containerColor = MaterialTheme.colorScheme.background
)

"亚瑟·卡斯帕里安的建议"

eni9jsuy

eni9jsuy1#

内容主体的高度部分取决于topBar主体的高度,而权重设置器在这些作用域中是不可访问的,所以我认为这是不可能的。然而,您可以做的只是在内容中包含top bar:

val configuration = LocalConfiguration.current
val screenHeight = configuration.screenHeightDp.dp
val size = screenHeight / 2
Scaffold(
    content = {
        Column {
            TopAppBar(
                modifier = Modifier
                    .height(size)
                    .weight(1f)
                    .fillMaxWidth()
            ) {
                Text("$size")
            }
            Box(
                modifier = Modifier
                    .height(size)
                    .weight(1f)
                    .fillMaxWidth()
                    .background(Color.Red)
            ) {
                Text("$size")
            }
        }
    },
)

你会得到这样的结果:

2vuwiymt

2vuwiymt2#

如果不需要任何其他元素,您可以跳过使用scaffold,布局将简单地变成一个列,如下所示:

Column(
    modifier = Modifier.fillMaxSize()
) {
    TopAppBar(
        modifier = Modifier
            .fillMaxWidth()
            .weight(1f)
    ) {}

    Content(
        modifier = Modifier
            .fillMaxWidth()
            .weight(1f)
    )
}

相关问题