相對(duì)布局組件

2024-01-22 17:55 更新

相對(duì)布局組件,用于復(fù)雜場(chǎng)景中元素對(duì)齊的布局。

說(shuō)明

該組件從API Version 9開(kāi)始支持。后續(xù)版本如有新增內(nèi)容,則采用上角標(biāo)單獨(dú)標(biāo)記該內(nèi)容的起始版本。

規(guī)則說(shuō)明

  • 容器內(nèi)子組件區(qū)分水平方向,垂直方向:
    • 水平方向?yàn)閘eft, middle, right,對(duì)應(yīng)容器的HorizontalAlign.Start, HorizontalAlign.Center, HorizontalAlign.End。
    • 垂直方向?yàn)閠op, center, bottom,對(duì)應(yīng)容器的VerticalAlign.Top, VerticalAlign.Center, VerticalAlign.Bottom。
  • 子組件可以將容器或者其他子組件設(shè)為錨點(diǎn):
    • 參與相對(duì)布局的容器內(nèi)組件必須設(shè)置id,不設(shè)置id的組件不顯示,容器id固定為_(kāi)_container__。
    • 此子組件某一方向上的三個(gè)位置(水平方向?yàn)閘eft、middle、right,垂直方向?yàn)閠op、center、bottom)可以指定容器或其他子組件同方向的三個(gè)位置(水平方向?yàn)镠orizontalAlign.Start、HorizontalAlign.Center、HorizontalAlign.End,垂直方向?yàn)閂erticalAlign.Top、VerticalAlign.Center、VerticalAlign.Bottom)為錨點(diǎn)。若同方向上設(shè)置兩個(gè)以上錨點(diǎn),水平方向Start和Center優(yōu)先,垂直方向Top和Center優(yōu)先。例如,水平方向上指定了left以容器的HorizontalAlign.Start為錨點(diǎn),middle以容器的HorizontalAlign.Center為錨點(diǎn),又指定right的錨點(diǎn)為容器的HorizontalAlign.End,當(dāng)組件的width和容器的width不能同時(shí)滿(mǎn)足3條約束規(guī)則時(shí),優(yōu)先取Start和Center的約束規(guī)則。
    • 前端頁(yè)面設(shè)置的子組件尺寸大小不會(huì)受到相對(duì)布局規(guī)則的影響。子組件某個(gè)方向上設(shè)置兩個(gè)或以上alignRules時(shí)不建議設(shè)置此方向尺寸大小。
    • 對(duì)齊后需要額外偏移可設(shè)置offset。
  • 特殊情況
    • 互相依賴(lài),環(huán)形依賴(lài)時(shí)容器內(nèi)子組件全部不繪制。
    • 同方向上兩個(gè)以上位置設(shè)置錨點(diǎn)但錨點(diǎn)位置逆序時(shí)此子組件大小為0,即不繪制。
    • 容器不設(shè)置寬高時(shí),容器與容器內(nèi)子組件不繪制。

子組件

支持多個(gè)子組件。

接口

RelativeContainer()

從API version 9開(kāi)始,該接口支持在ArkTS卡片中使用。

示例

  1. @Entry
  2. @Component
  3. struct Index {
  4. build() {
  5. Row() {
  6. RelativeContainer() {
  7. Row().width(100).height(100)
  8. .backgroundColor("#FF3333")
  9. .alignRules({
  10. top: {anchor: "__container__", align: VerticalAlign.Top},
  11. left: {anchor: "__container__", align: HorizontalAlign.Start}
  12. })
  13. .id("row1")
  14. Row().width(100).height(100)
  15. .backgroundColor("#FFCC00")
  16. .alignRules({
  17. top: {anchor: "__container__", align: VerticalAlign.Top},
  18. right: {anchor: "__container__", align: HorizontalAlign.End}
  19. })
  20. .id("row2")
  21. Row().height(100)
  22. .backgroundColor("#FF6633")
  23. .alignRules({
  24. top: {anchor: "row1", align: VerticalAlign.Bottom},
  25. left: {anchor: "row1", align: HorizontalAlign.End},
  26. right: {anchor: "row2", align: HorizontalAlign.Start}
  27. })
  28. .id("row3")
  29. Row()
  30. .backgroundColor("#FF9966")
  31. .alignRules({
  32. top: {anchor: "row3", align: VerticalAlign.Bottom},
  33. bottom: {anchor: "__container__", align: VerticalAlign.Bottom},
  34. left: {anchor: "__container__", align: HorizontalAlign.Start},
  35. right: {anchor: "row1", align: HorizontalAlign.End}
  36. })
  37. .id("row4")
  38. Row()
  39. .backgroundColor("#FF66FF")
  40. .alignRules({
  41. top: {anchor: "row3", align: VerticalAlign.Bottom},
  42. bottom: {anchor: "__container__", align: VerticalAlign.Bottom},
  43. left: {anchor: "row2", align: HorizontalAlign.Start},
  44. right: {anchor: "__container__", align: HorizontalAlign.End}
  45. })
  46. .id("row5")
  47. }
  48. .width(300).height(300)
  49. .margin({left: 100})
  50. .border({width:2, color: "#6699FF"})
  51. }
  52. .height('100%')
  53. }
  54. }

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)