经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 移动开发 » 鸿蒙 » 查看文章
鸿蒙HarmonyOS实战-ArkUI组件(RelativeContainer)
来源:cnblogs  作者:蜀道山QAQ  时间:2024/3/26 8:58:49  对本文有异议

??一、RelativeContainer

??1.概述

ArkUI组件中的RelativeContainer是一个相对定位的容器,可以用来将子组件按照相对位置布局。

在RelativeContainer中,每个子组件都可以设置相对于父容器或其他组件的位置和大小。可以通过设置相对位置、偏移量、宽度和高度来实现布局。相对位置可以设置为左侧、上方、右侧和下方。偏移量可以设置为相对位置的偏移值,例如向右偏移10像素或向下偏移5像素。宽度和高度可以设置为相对值或绝对值。

使用RelativeContainer时,要注意避免组件重叠或越出容器边界的情况。可以使用zIndex属性来设置组件的堆叠顺序,避免遮盖问题。同时,也可以使用padding属性来设置内边距,避免组件紧贴容器边缘。

更多鸿蒙最新技术知识点,请关注作者博客:https://t.doruo.cn/14DjR1rEY

RelativeContainer是一个非常灵活的容器组件,可以实现各种复杂的布局效果。

image

??2.设置依赖关系

??2.1 锚点设置

在网页中,锚点是指可以跳转到页面中特定位置的链接。设置锚点需要以下步骤:

在 HTML 页面中找到要设置锚点的位置。

在该位置的标签中添加一个 ID 属性,并为其赋一个唯一的值。例如:

Section 1

在引用该锚点的链接中,将链接目标指向该 ID。例如:Go to Section 1

当用户点击链接时,页面会自动滚动到设定的锚点位置。

更多鸿蒙最新技术知识点,请关注作者博客:https://t.doruo.cn/14DjR1rEY

但在RelativeContainer中锚点其实是对于的参照物,具体用法介绍如下:

  • 在水平方向上,可以设置left、middle、right的锚点。
  • 在竖直方向上,可以设置top、center、bottom的锚点。
  • 必须为RelativeContainer及其子元素设置ID,用于指定锚点信息。RelativeContainer的ID默认为__container__

1、RelativeContainer父组件为锚点,__container__代表父容器的id

  1. RelativeContainer() {
  2. Row(){
  3. Text('1').width('33%').height(50).backgroundColor(0xF5DEB3)
  4. }
  5. // 添加其他属性
  6. .alignRules({
  7. top: { anchor: '__container__', align: VerticalAlign.Top },
  8. left: { anchor: '__container__', align: HorizontalAlign.Start }
  9. })
  10. .id("row1")
  11. Row(){
  12. Text('2').width('33%').height(50).backgroundColor(0xD2B48C)
  13. }
  14. .alignRules({
  15. top: { anchor: '__container__', align: VerticalAlign.Top },
  16. right: { anchor: '__container__', align: HorizontalAlign.End }
  17. })
  18. .id("row2")
  19. }
  20. .width(300).height(300)
  21. .margin({ left: 20 })
  22. .border({ width: 2, color: '#6699FF' })

image

2、以子元素为锚点

  1. RelativeContainer() {
  2. Row(){
  3. Text('1').width('33%').height(50).backgroundColor(0xF5DEB3)
  4. }
  5. // 添加其他属性
  6. .alignRules({
  7. top: { anchor: '__container__', align: VerticalAlign.Top },
  8. left: { anchor: '__container__', align: HorizontalAlign.Start }
  9. })
  10. .id("row1")
  11. Row(){
  12. Text('2').width('33%').height(50).backgroundColor(0xD2B48C)
  13. }
  14. .alignRules({
  15. top: { anchor: 'row1', align: VerticalAlign.Bottom },
  16. right: { anchor: 'row1', align: HorizontalAlign.End }
  17. })
  18. .id("row2")
  19. }
  20. .width(300).height(300)
  21. .margin({ left: 20 })
  22. .border({ width: 2, color: '#6699FF' })

image

??2.2 设置相对于锚点的对齐位置

1、在水平方向上,对齐位置可以设置为HorizontalAlign.Start、HorizontalAlign.Center、HorizontalAlign.End

image

2、在竖直方向上,对齐位置可以设置为VerticalAlign.Top、VerticalAlign.Center、VerticalAlign.Bottom

image

??3.案例

  1. @Entry
  2. @Component
  3. struct Index {
  4. build() {
  5. Row() {
  6. RelativeContainer() {
  7. Row()
  8. .width(100)
  9. .height(100)
  10. .backgroundColor('#FF3333')
  11. .alignRules({
  12. top: { anchor: '__container__', align: VerticalAlign.Top }, //以父容器为锚点,竖直方向顶头对齐
  13. middle: { anchor: '__container__', align: HorizontalAlign.Center } //以父容器为锚点,水平方向居中对齐
  14. })
  15. .id('row1') //设置锚点为row1
  16. Row() {
  17. Image($r('app.media.icon'))
  18. }
  19. .height(100).width(100)
  20. .alignRules({
  21. top: { anchor: 'row1', align: VerticalAlign.Bottom }, //以row1组件为锚点,竖直方向低端对齐
  22. left: { anchor: 'row1', align: HorizontalAlign.Start } //以row1组件为锚点,水平方向开头对齐
  23. })
  24. .id('row2') //设置锚点为row2
  25. Row()
  26. .width(100)
  27. .height(100)
  28. .backgroundColor('#FFCC00')
  29. .alignRules({
  30. top: { anchor: 'row2', align: VerticalAlign.Top }
  31. })
  32. .id('row3') //设置锚点为row3
  33. Row()
  34. .width(100)
  35. .height(100)
  36. .backgroundColor('#FF9966')
  37. .alignRules({
  38. top: { anchor: 'row2', align: VerticalAlign.Top },
  39. left: { anchor: 'row2', align: HorizontalAlign.End },
  40. })
  41. .id('row4') //设置锚点为row4
  42. Row()
  43. .width(100)
  44. .height(100)
  45. .backgroundColor('#FF66FF')
  46. .alignRules({
  47. top: { anchor: 'row2', align: VerticalAlign.Bottom },
  48. middle: { anchor: 'row2', align: HorizontalAlign.Center }
  49. })
  50. .id('row5') //设置锚点为row5
  51. }
  52. .width(300).height(300)
  53. .border({ width: 2, color: '#6699FF' })
  54. }
  55. .height('100%').margin({ left: 30 })
  56. }
  57. }

image

??写在最后

  • 如果你觉得这篇内容对你还蛮有帮助,我想邀请你帮我三个小忙:
  • 点赞,转发,有你们的 『点赞和评论』,才是我创造的动力。
  • 关注小编,同时可以期待后续文章ing??,不定期分享原创知识。
  • 更多鸿蒙最新技术知识点,请关注作者博客:https://t.doruo.cn/14DjR1rEY

image

原文链接:https://www.cnblogs.com/shudaoshan/p/18094780

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号