在HarmonyOS NEXT开发中RelativeContainer 经过offset设置的锚点位置坐标不能作为锚点,只能用没有经过offset配置的旧坐标作为锚点来给下一个组件进行标定?比如说A组件经过了锚点配置了位置,此时A组件有一个坐标pos1,经过offset设置了新的位置pos2,B组件想要基于A的新位置pos2做标定,必须要将A组件的offset一并加上才能达到在pos2基础上做标定。
比如说下面三个组件,想要达成的效果是年龄和个人信息之间相差13,性别和年龄之间间隔13,但是实际上却是这三个组件之间的间隔为0
Row() {
Text('个人信息')
.fontColor(Color.White)
.fontSize(14)
.alignRules({
left: { anchor: 'row1', align: HorizontalAlign.Start },
center: { anchor: 'row1', align: VerticalAlign.Center }
})
.offset({
x: 13,
y: 0,
})
.id("person_info_text")
Button('年龄')
.fontSize(12)
.aspectRatio(1.857)
.alignRules({
left: { anchor: "person_info_text", align: HorizontalAlign.End },
center: { anchor: 'row1', align: VerticalAlign.Center }
})
.offset({
x: 13,
y: 0,
})
.id("age_btn")
Button('性别')
.fontSize(12)
.aspectRatio(1.857)
.alignRules({
left: { anchor: "age_btn", align: HorizontalAlign.End },
center: { anchor: 'row1', align: VerticalAlign.Center }
})
.offset({
x: 13,
y: 0,
})
.id("gender_btn")
RelativeContainer经过offset设置的锚点位置还是之前没有偏移的位置,所以后面的组件参考的位置还是偏移前的位置,所以要实现上面的效果需要这样设置: