OpenHarmony/HarmonyOS中Stack,Flex布局的使用
作者:坚果
本示例为构建了简单页面展示食物坚果的图片和营养信息,主要为了展示简单页面的Stack布局和Flex布局。
适用
语言:ArkTS
版本:API9
OpenHarmony:3.2Release
HarmonyOS:3.1
运行效果
完整代码
@Component
struct NustImageDisplay {
build() {
Stack({ alignContent: Alignment.BottomStart }) {
Image($r('app.media.nust'))
.objectFit(ImageFit.Cover)
Text('大坚果')
.fontSize(26)
.fontWeight(500)
.margin({ left: 26, bottom: 17.4 })
}
.backgroundColor('#FFedf2f5')
.height(357)
}
}
@Component
struct ContentTable {
@Builder IngredientItem(title:string, name?: string, value?: string) {
Flex() {
Text(title)
.fontSize(17.4)
.fontWeight(FontWeight.Bold)
.layoutWeight(1)
Flex({ alignItems: ItemAlign.Center }) {
Text(name)
.fontSize(17.4)
.flexGrow(1)
Text(value)
.fontSize(17.4)
}
.layoutWeight(2)
}
}
build() {
Flex({ direction: FlexDirection.Column, justifyContent: FlexAlign.SpaceBetween, alignItems: ItemAlign.Start }) {
this.IngredientItem('卡路里', '17kcal',"卡路里")
this.IngredientItem('营养', '蛋白质', '0.9g')
this.IngredientItem(' ', '油脂', '0.2g')
this.IngredientItem(' ', '碳水化合物', '3.9g')
this.IngredientItem(' ', '维生素C', '17.8mg')
}
.padding({ top: 20, right: 20, left: 20 })
.height(250)
}
}
@Entry
@Component
struct FoodDetail {
build() {
Column() {
NustImageDisplay()
ContentTable()
}
.alignItems(HorizontalAlign.Center)
}
}
接下来就来带大家拆解一下。用到的几个组件。
Flex
以弹性方式布局子组件的容器组件。
Flex组件在渲染时存在二次布局过程,因此在对性能有严格要求的场景下建议使用Column、Row代替。
Flex(value?: { direction?: FlexDirection, wrap?: FlexWrap, justifyContent?: FlexAlign, alignItems?: ItemAlign, alignContent?: FlexAlign })
标准Flex布局容器。
- direction:子组件在Flex容器上排列的方向,即主轴的方向。
- wrap:Flex容器是单行/列还是多行/列排列。 说明: 在多行布局时,通过交叉轴方向,确认新行堆叠方向。
- justifyContent:所有子组件在Flex容器主轴上的对齐格式。
- alignItems:所有子组件在Flex容器交叉轴上的对齐格式。
- alignContent:交叉轴中有额外的空间时,多行内容的对齐方式。仅在wrap为Wrap或WrapReverse下生效。
Stack
堆叠容器,子组件按照顺序依次入栈,后一个子组件覆盖前一个子组件。
Stack(value?: { alignContent?: Alignment })
- alignContent:设置子组件在容器内的对齐方式。 默认值:Alignment.Center
Column
横向布局元素间距
Space:纵向布局元素垂直方向间距。
- alignItems:设置子组件在水平方向上的对齐格式。默认值:HorizontalAlign.Center
- justifyContent:设置子组件在垂直方向上的对齐格式。
Row
沿水平方向布局容器。
Space:沿垂直方向布局的容器。
- alignItems:设置子组件在垂直方向上的对齐格式。 默认值:VerticalAlign.Center
- justifyContent:设置子组件在水平方向上的对齐格式。 FlexAlign.Start
以上就是用到的几个组件和介绍。大家可以自己复制代码到本地,然后打开预览器,或者真机测试。