赞
踩
RelativeContainer
为相对布局的容器组件,支持容器内部的子元素设置相对位置关系。子元素支持指定兄弟元素作为锚点,也支持指定父容器作为锚点,基于锚点做相对位置布局。
锚点:通过锚点设置当前元素基于哪个元素确定位置。
RelativeContainer
及其子元素设置IDRelativeContainer
的ID默认为__container__
id
属性设置RelativeContainer
中不显示子元素通过alignRules
属性设置锚点。在水平方向上,可以设置left、middle、right的锚点;在竖直方向上,可以设置top、center、bottom的锚点。
left、middle、right的锚点对齐方式:
top、center、bottom的锚点对齐方式:
@Entry @Component struct RelativeLayout { build() { RelativeContainer() { Button("左上角的按钮") .id("btn1") .alignRules({ // anchor:锚点的ID // align:对齐方式 // 子组件的左边与父组件的水平方向首端对齐 left: {anchor: "__container__", align: HorizontalAlign.Start} }) Button("右上角的按钮") .id("btn2") .alignRules({ // 子组件的右边与父组件的水平方向尾部对齐 right: {anchor: "__container__", align: HorizontalAlign.End} }) Button("左下角的按钮") .id("btn3") .alignRules({ // 子组件的左边与父组件的水平方向首端对齐 left: {anchor: "__container__", align: HorizontalAlign.Start}, // 子组件的底部与父组件的垂直方向底部对齐 bottom: {anchor: "__container__", align: VerticalAlign.Bottom} }) Button("右下角的按钮") .id("btn4") .alignRules({ // 子组件的右边与父组件的水平方向尾部对齐 right: {anchor: "__container__", align: HorizontalAlign.End}, // 子组件的底部与父组件的垂直方向底部对齐 bottom: {anchor: "__container__", align: VerticalAlign.Bottom} }) } .width("100%") .height("100%") } }
子组件经过锚点相对位置对齐后,位置可能还不是目标位置,此时可以通过offset
属性设置位置偏移量进行微调。
偏移量的参考点是自身
@Entry @Component struct RelativeLayout { build() { RelativeContainer() { Button("左上角的按钮") .id("btn1") .alignRules({ // 子组件的左边与父组件的水平方向首端对齐 left: {anchor: "__container__", align: HorizontalAlign.Start} }) // 设置偏移量,在x轴的偏移量和y轴的偏移量 .offset({ x: 10, y: 10 }) Button("右上角的按钮") .id("btn2") .alignRules({ // 子组件的右边与父组件的水平方向尾部对齐 right: {anchor: "__container__", align: HorizontalAlign.End} }) Button("左下角的按钮") .id("btn3") .alignRules({ // 子组件的左边与父组件的水平方向首端对齐 left: {anchor: "__container__", align: HorizontalAlign.Start}, // 子组件的底部与父组件的垂直方向底部对齐 bottom: {anchor: "__container__", align: VerticalAlign.Bottom} }) Button("右下角的按钮") .id("btn4") .alignRules({ // 子组件的右边与父组件的水平方向尾部对齐 right: {anchor: "__container__", align: HorizontalAlign.End}, // 子组件的底部与父组件的垂直方向底部对齐 bottom: {anchor: "__container__", align: VerticalAlign.Bottom} }) } .width("100%") .height("100%") } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。