赞
踩
线性布局(LinearLayout)是开发中最常用的布局,通过线性容器Row
和Column
构建。线性布局是其他布局的基础,其子元素在线性方向上(水平方向和垂直方向)依次排列。
Row
容器内子元素按照水平方向排列,通过 space
属性设置排列方向上子元素的间距。
@Entry
@Component
struct RowLayout {
build() {
Row({space: 20}) {
Button("第一按钮")
Button("第二按钮")
Button("第三按钮")
}
}
}
在布局容器内,可以通过justifyContent
属性设置子元素在容器主轴上的排列方式。Row
容器的主轴是水平方向的。
@Entry
@Component
struct RowLayout {
build() {
Row() {
Button("第一按钮")
Button("第二按钮")
Button("第三按钮")
}
// 不设置Row容器宽,则Row容器的宽是子元素宽的总和
.width("100%")
.justifyContent(FlexAlign.SpaceBetween)
}
}
@Entry
@Component
struct RowLayout {
build() {
Row() {
Button("第一按钮")
Button("第二按钮")
Button("第三按钮")
}
// 不设置Row容器宽,则Row容器的宽是子元素宽的总和
.width("100%")
.justifyContent(FlexAlign.SpaceAround)
}
}
@Entry
@Component
struct RowLayout {
build() {
Row() {
Button("第一按钮")
Button("第二按钮")
Button("第三按钮")
}
// 不设置Row容器宽,则Row容器的宽是子元素宽的总和
.width("100%")
.justifyContent(FlexAlign.SpaceEvenly)
}
}
交叉轴是垂直于主轴的,因为
Row
容器的主轴是水平方向的,所以Row
容器的交叉轴是垂直方向的。
在布局容器内,可以通过alignItems
属性设置子元素在容器交叉轴上的对齐方式。
@Entry @Component struct RowLayout { build() { Row() { Button("第一按钮") Button("第二按钮") Button("第三按钮") } // 不设置Row容器宽,则Row容器的宽是子元素宽的总和 .width("100%") // 不设置Row容器高,则Row容器的高等于子元素的高 .height("100%") .justifyContent(FlexAlign.SpaceEvenly) .alignItems(VerticalAlign.Center) } }
除了通过alignItems
属性控制所有子元素在容器交叉轴上的对齐方式外,alignSelf
属性用于控制单个子元素在容器交叉轴上的对齐方式,其优先级高于alignItems
属性。
@Entry @Component struct RowLayout { build() { Row() { Button("第一按钮") .alignSelf(ItemAlign.Stretch) Button("第二按钮") .alignSelf(ItemAlign.Start) Button("第三按钮") } // 不设置Row容器宽,则Row容器的宽是子元素宽的总和 .width("100%") // 不设置Row容器高,则Row容器的高等于子元素的高 .height("100%") .justifyContent(FlexAlign.SpaceEvenly) .alignItems(VerticalAlign.Center) } }
Column
容器内子元素按照垂直方向排列,通过 space
属性设置排列方向上子元素的间距。
@Entry
@Component
struct ColumnLayout {
build() {
Column({space: 20}) {
Button("第一按钮")
Button("第二按钮")
Button("第三按钮")
}
}
}
在布局容器内,可以通过justifyContent
属性设置子元素在容器主轴上的排列方式。Column
容器的主轴是垂直方向的。
@Entry
@Component
struct ColumnLayout {
build() {
Column({space: 20}) {
Button("第一按钮")
Button("第二按钮")
Button("第三按钮")
}
// 不设置Column容器高,则Column容器的高是子元素高的总和
.height("100%")
.justifyContent(FlexAlign.SpaceBetween)
}
}
@Entry
@Component
struct ColumnLayout {
build() {
Column({space: 20}) {
Button("第一按钮")
Button("第二按钮")
Button("第三按钮")
}
// 不设置Column容器高,则Column容器的高是子元素高的总和
.height("100%")
.justifyContent(FlexAlign.SpaceAround)
}
}
@Entry
@Component
struct ColumnLayout {
build() {
Column({space: 20}) {
Button("第一按钮")
Button("第二按钮")
Button("第三按钮")
}
// 不设置Column容器高,则Column容器的高是子元素高的总和
.height("100%")
.justifyContent(FlexAlign.SpaceEvenly)
}
}
交叉轴是垂直于主轴的,因为
Column
容器的主轴是垂直方向的,所以Column
容器的交叉轴是水平方向的。
在布局容器内,可以通过alignItems
属性设置子元素在容器交叉轴上的对齐方式。
@Entry @Component struct ColumnLayout { build() { Column({space: 20}) { Button("第一按钮") Button("第二按钮") Button("第三按钮") } // 不设置Column容器高,则Column容器的高是子元素高的总和 .height("100%") // 不设置Column容器宽,则Column容器的宽等于子元素的宽 .width("100%") .justifyContent(FlexAlign.SpaceEvenly) .alignItems(HorizontalAlign.Center) } }
除了通过alignItems
属性控制所有子元素在容器交叉轴上的对齐方式外,alignSelf
属性用于控制单个子元素在容器交叉轴上的对齐方式,其优先级高于alignItems
属性。
@Entry @Component struct ColumnLayout { build() { Column({space: 20}) { Button("第一按钮") .alignSelf(ItemAlign.Stretch) Button("第二按钮") .alignSelf(ItemAlign.Start) Button("第三按钮") } // 不设置Column容器高,则Column容器的高是子元素高的总和 .height("100%") // 不设置Column容器宽,则Column容器的宽等于子元素的宽 .width("100%") .justifyContent(FlexAlign.SpaceEvenly) .alignItems(HorizontalAlign.Center) } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。