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

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

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

  1. Scaffold(
  2. topBar = {
  3. MyLargeTopAppBar(modifier = Modifier.height(1f))
  4. },
  5. content = {
  6. LazyColumn(modifier = Modifier.padding(it).height(1f)) {
  7. ...
  8. }
  9. },
  10. containerColor = MaterialTheme.colorScheme.background
  11. )

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

eni9jsuy

eni9jsuy1#

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

  1. val configuration = LocalConfiguration.current
  2. val screenHeight = configuration.screenHeightDp.dp
  3. val size = screenHeight / 2
  4. Scaffold(
  5. content = {
  6. Column {
  7. TopAppBar(
  8. modifier = Modifier
  9. .height(size)
  10. .weight(1f)
  11. .fillMaxWidth()
  12. ) {
  13. Text("$size")
  14. }
  15. Box(
  16. modifier = Modifier
  17. .height(size)
  18. .weight(1f)
  19. .fillMaxWidth()
  20. .background(Color.Red)
  21. ) {
  22. Text("$size")
  23. }
  24. }
  25. },
  26. )

你会得到这样的结果:

展开查看全部
2vuwiymt

2vuwiymt2#

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

  1. Column(
  2. modifier = Modifier.fillMaxSize()
  3. ) {
  4. TopAppBar(
  5. modifier = Modifier
  6. .fillMaxWidth()
  7. .weight(1f)
  8. ) {}
  9. Content(
  10. modifier = Modifier
  11. .fillMaxWidth()
  12. .weight(1f)
  13. )
  14. }

相关问题