文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

组件布局中相对定位的分类和使用(Position、MarkAnchor、Offset)

2024-11-30 05:13

关注

想了解更多关于开源的内容,请访问:

51CTO 开源基础软件社区

https://ost.51cto.com

场景说明

OpenHarmony为开发者提供了丰富的组件布局能力,当开发者在布局时希望组件的位置不采用固定的对齐方式,就可以使用相对布局对组件进行精确定位。其中position、markAnchor、offset三种方式可以实现相对定位,开发者容易混淆,本文将结合图文和具体示例,为大家讲解三者的用法和区别。

position

使用语法:

组件.position({x,y})

开发者可以通过position属性来固定组件的位置。以父组件的左上角为坐标原点,添加了position属性的子组件左上角固定在参数x、y指定的坐标点。x,y均延坐标箭头方向递增。

参考坐标图如下(以x>0,y>0为例):

示例

本例在一个Row组件中添加一个Text子组件,如果希望Text组件相对于Row组件左上角向右下方偏移到(30,20)的位置,使用position实现的代码如下:

Row() {
  Text('.postion({x:30,y:20})')
    ......
    .position({ x: 30, y: 20 })
}
......

示例图如下:

markAnchor

使用语法:

组件.markAnchor({x,y})

开发者也可以通过markAnchor属性对组件进行相对定位。markAnchor属性通常和position属性一起使用,也可以单独使用。

示例

本例在一个Column组件中添加一个Text子组件,由于Column组件默认子组件顶部对齐,所以坐标原点为Column组件的左上角。如果希望Text组件相对于Column组件左上角向左上方偏移到(25,25)的位置,使用markAnchor实现的代码如下:

Column() {
  Text('.markAnchor({x:25,y:25})')
    ......
    .markAnchor({ x: 25, y: 25 })
}
......

示例图如下:

组件布局中相对定位的分类和使用(position、markAnchor、offset)-开源基础软件社区

说明:
由于position的坐标系不受父组件中子组件的对齐方式影响,所以当和position属性一起使用时,markAnchor的坐标系也不受父组件中子组件的对齐方式影响。

示例

本例在一个Stack组件中添加一个Text子组件,同时给Text组件添加position属性和markAnchor属性。Text组件会先采用position的坐标系,以Stack组件左上角为原点,移动到(50,50)的位置,再以(50,50)为坐标原点,采用markAnchor的坐标系移动到(25,25)的位置,代码如下:

Stack({ alignContent: Alignment.TopStart }) {
  Text('.markAnchor({x:25,y:25}) .position({x:50,y:50})')
    ......
    .markAnchor({ x: 25, y: 25 })
    .position({x:50,y:50})
}
......

示例图如下:

offset

使用语法:

组件.offset({x,y})

开发者可以通过offset属性设置组件相对于前一个组件的偏移量。添加了offset属性的组件以前一个组件的右上角为坐标原点进行偏移,其左上角偏移到(x,y)坐标点。x,y均延坐标箭头方向递增。

参考坐标图如下(以x>0,y>0为例):

组件布局中相对定位的分类和使用(position、markAnchor、offset)-开源基础软件社区

示例

本例在一个Row组件中添加A、B两个Text子组件,如果希望B相对于A的左上角偏移到(30,0)的位置,使用offset实现的代码如下:

Row() {
  Text('A')
    ......
  Text('B.offset({x:30, y:0})')
    .offset({ x: 30, y: 0 })
    ......
}.width('90%').height(50)
......

示例图如下:

组件布局中相对定位的分类和使用(position、markAnchor、offset)-开源基础软件社区

参考

想了解更多关于开源的内容,请访问:

51CTO 开源基础软件社区

https://ost.51cto.com

来源:51CTO 开源基础软件社区内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯