解决措施给Text组件设置margin时,可以给上下两个方向设置相同的margin,此时两个组件可以在水平方向对齐,因为相对布局RelativeContainer设置锚点时,是以组件占据的所有空间计算的,包括margin和padding,如果只设置margintop,锚点设为VerticalAlign.Center,实际锚点位置在Text组件中心点偏上。示例代码@Entry @Component struct relativeLayoutExample { build() { RelativeContainer() { Text('宽度') .fontSize(12) .padding({ left: 20, right: 12 }) .fontColor('#222630') .margin({ top: 20, bottom: 20 // 这里如果只设置margin-top,会导致后面TextInput组件在竖直方向上的锚点位置在Text组件中心偏上 }) .alignRules({ left: { anchor: '__container__', align: HorizontalAlign.Center }, top: { anchor: '__container__', align: VerticalAlign.Top } }) .id('width-text') TextInput() .backgroundColor('#F7F7F8') .borderRadius(8) .height(32) .width(56) .fontSize(14) .maxLength(4) .fontColor(Color.Black) .type(InputType.Number) .onChange(() => { }) .alignRules({ center: { anchor: 'width-text', align: VerticalAlign.Center }, left: { anchor: 'width-text', align: HorizontalAlign.End } }) .id('width-edit') } .width('100%') .height(300) .border({ width: 2, color: "#6699FF" }) } }
解决措施
给Text组件设置margin时,可以给上下两个方向设置相同的margin,此时两个组件可以在水平方向对齐,因为相对布局RelativeContainer设置锚点时,是以组件占据的所有空间计算的,包括margin和padding,如果只设置margintop,锚点设为VerticalAlign.Center,实际锚点位置在Text组件中心点偏上。
示例代码