HarmonyOS鸿蒙Next中一个界面,最外层是Column,高度是100%,它里面有2个东西:上面的,高度用vp已设置,下面的,怎么让它高度充满剩下的空间?
HarmonyOS鸿蒙Next中一个界面,最外层是Column,高度是100%,它里面有2个东西:上面的,高度用vp已设置,下面的,怎么让它高度充满剩下的空间?
build() {
Column() {
Row() {}.height(40)
Column() {} //这个高度怎么充满剩下的空间?
}.height('100%')
}
谢谢~
5 回复
【解决方案】
build() {
Column() {
Row() {
}.height(40)
Column() { //这个高度怎么充满剩下的空间?
}.layoutWeight(1)//layoutWeight属性仅在Row/Column/Flex布局中生效。
}.height('100%')
}
layoutWeight(value: number | string):设置组件的布局权重,使组件在父容器(Row/Column/Flex)的主轴方向按照权重分配尺寸。
- 父容器尺寸确定时,不设置layoutWeight属性或者layoutWeight属性生效值为0的元素优先占位,这些元素占位后在主轴留下的空间称为主轴剩余空间。设置了layoutWeight属性且layoutWeight属性生效值大于0的子元素会从主轴剩余空间中按照各自所设置的权重占比分配尺寸,分配时会忽略元素本身的尺寸设置。
- 仅在Row/Column/Flex布局中生效。
- 如果容器中有子元素设置了layoutWeight属性,且设置的属性值大于0,则所有子元素不会再基于flexShrink和flexGrow布局。
更多关于HarmonyOS鸿蒙Next中一个界面,最外层是Column,高度是100%,它里面有2个东西:上面的,高度用vp已设置,下面的,怎么让它高度充满剩下的空间?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
build() {
Column() {
Row() {}.height(40)
Column() {}.layoutWeight(1) // 使用layoutWeight(1) 充满剩下的空间
}.height('100%')
}
主要是【layoutWeight】;实现子元素尺寸权重的容器layoutWeight如何使用:https://developer.huawei.com/consumer/cn/doc/architecture-guides/tools-v1_2-ts_207-0000002414671885
在Column内,给下面的组件设置layoutWeight(1)即可。该属性会使组件在剩余空间中按权重分配高度,设为1表示占据全部剩余空间。
在HarmonyOS Next中,要让第二个Column组件充满剩余空间,最简洁的方式是使用layoutWeight属性。
将代码修改如下:
build() {
Column() {
Row() {}.height(40)
Column() {}.layoutWeight(1) // 关键:设置权重为1
}.height('100%')
}
原理说明:
- 父容器
Column设置了固定高度100%。 - 第一个
Row设置了固定高度40vp。 - 第二个
Column设置layoutWeight(1)后,系统会自动计算剩余空间并全部分配给它。
补充说明:
layoutWeight的默认值为0,表示不参与剩余空间分配。- 如果有多个子组件都设置了
layoutWeight,剩余空间会按权重比例分配。 - 这种方法比手动计算高度更简洁高效,能自动适应不同屏幕尺寸。
这样修改后,第二个Column就能自动填满Column容器中除第一个Row之外的所有空间了。

