0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

鴻蒙ArkTS容器組件:SideBarContainer

jf_46214456 ? 來源:jf_46214456 ? 作者:jf_46214456 ? 2024-07-18 15:46 ? 次閱讀

SideBarContainer

提供側(cè)邊欄可以顯示和隱藏的側(cè)邊欄容器,通過子組件定義側(cè)邊欄和內(nèi)容區(qū),第一個子組件表示側(cè)邊欄,第二個子組件表示內(nèi)容區(qū)。

說明:
開發(fā)前請熟悉鴻蒙開發(fā)指導文檔 :[gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md]
該組件從API Version 8開始支持。后續(xù)版本如有新增內(nèi)容,則采用上角標單獨標記該內(nèi)容的起始版本。

子組件

可以包含子組件。

說明:

  • 子組件類型:系統(tǒng)組件和自定義組件,不支持渲染控制類型([if/else]、[ForEach]和[LazyForEach])。
  • 子組件個數(shù):必須且僅包含2個子組件。
  • 子組件個數(shù)異常時:3個或以上子組件,顯示第一個和第二個。1個子組件,顯示側(cè)邊欄,內(nèi)容區(qū)為空白。

接口

SideBarContainer( type?: SideBarContainerType )

參數(shù)

參數(shù)名參數(shù)類型必填參數(shù)描述
typeSideBarContainerType設置側(cè)邊欄的顯示類型。 默認值:SideBarContainerType.Embed

SideBarContainerType枚舉說明

名稱描述
Embed側(cè)邊欄嵌入到組件內(nèi),和內(nèi)容區(qū)并列顯示。 組件尺寸小于minContentWidth + minSideBarWidth,并且未設置showSideBar時,側(cè)邊欄自動隱藏。 未設置minSideBarWidth或者minContentWidth采用未設置接口的默認值進行計算。 組件在自動隱藏后,如果通過點擊控制按鈕喚出側(cè)邊欄,則側(cè)邊欄懸浮在內(nèi)容區(qū)上顯示。
Overlay側(cè)邊欄浮在內(nèi)容區(qū)上面。
AUTO組件尺寸大于等于minSideBarWidth+minContentWidth時,采用Embed模式顯示。 組件尺寸小于minSideBarWidth+minContentWidth時,采用Overlay模式顯示。 未設置minSideBarWidth或minContentWidth時,會使用未設置接口的默認值進行計算,若計算的值小于600vp,則使用600vp做為模式切換的斷點值。

屬性

除支持[通用屬性]外,還支持以下屬性:

名稱參數(shù)類型描述
showSideBarboolean設置是否顯示側(cè)邊欄。 默認值:true 從API version 10開始,該屬性支持[$$]雙向綁定變量。
controlButton[ButtonStyle]設置側(cè)邊欄控制按鈕的屬性。
showControlButtonboolean設置是否顯示控制按鈕。 默認值:true
sideBarWidthnumber[Length]9+
minSideBarWidthnumber[Length]9+
maxSideBarWidthnumber[Length]9+
autoHide9+boolean設置當側(cè)邊欄拖拽到小于最小寬度后,是否自動隱藏。 默認值:true**說明:**受minSideBarWidth屬性方法影響,minSideBarWidth屬性方法未設置值使用默認值。 拖拽過程中判斷是否要自動隱藏。小于最小寬度時需要阻尼效果觸發(fā)隱藏(越界一段距離)
sideBarPosition9+[SideBarPosition]設置側(cè)邊欄顯示位置。 默認值:SideBarPosition.Start
divider10+[DividerStyle]null
minContentWidth10+[Dimension]SideBarContainer組件內(nèi)容區(qū)可顯示的最小寬度。 默認值:360vp 單位:vp**說明:**設置為小于0,內(nèi)容區(qū)顯示的最小寬度為360vp,未設置該屬性時,組件內(nèi)容區(qū)的可縮小到0。 Embed場景下,增大組件尺寸時僅增大內(nèi)容區(qū)的尺寸。 縮小組件尺寸時,先縮小內(nèi)容區(qū)的尺寸至minContentWidth。繼續(xù)縮小組件尺寸時,保持內(nèi)容區(qū)寬度minContentWidth不變,優(yōu)先縮小側(cè)邊欄的尺寸。 當縮小側(cè)邊欄的尺寸至minSideBarWidth后,繼續(xù)縮小組件尺寸時, - 如果autoHide屬性為false,則會保持側(cè)邊欄寬度minSideBarWidth和內(nèi)容區(qū)寬度minContentWidth不變,但內(nèi)容區(qū)會被截斷顯示; - 如果autoHide屬性為true,則會優(yōu)先隱藏側(cè)邊欄,然后繼續(xù)縮小至內(nèi)容區(qū)寬度minContentWidth后,內(nèi)容區(qū)寬度保持不變,但內(nèi)容區(qū)會被截斷顯示。 minContentWidth優(yōu)先于側(cè)邊欄的maxSideBarWidth與sideBarWidth屬性,minContentWidth未設置時默認值優(yōu)先級低于設置的minSideBarWidth與maxSideBarWidth屬性。

ButtonStyle對象說明

名稱參數(shù)類型必填描述
leftnumber設置側(cè)邊欄控制按鈕距離容器左界限的間距。 默認值:16vp 單位:vp
topnumber設置側(cè)邊欄控制按鈕距離容器上界限的間距。 默認值:48vp 單位:vp
widthnumber設置側(cè)邊欄控制按鈕的寬度。 默認值: API version 9及之前版本:32vp 從API version 10開始:24vp 單位:vp
heightnumber設置側(cè)邊欄控制按鈕的高度。 默認值: API version 9及之前版本:32vp 從API version 10開始:24vp 單位:vp
icons{ shown: stringPixelMap[Resource] , hidden: string

SideBarPosition9+枚舉說明

名稱描述
Start側(cè)邊欄位于容器左側(cè)。
End側(cè)邊欄位于容器右側(cè)。

DividerStyle10+對象說明

名稱參數(shù)類型必填描述
strokeWidth[Length]分割線的線寬。
color[ResourceColor]分割線的顏色。 默認值:#000000,3%
startMargin[Length]分割線與側(cè)邊欄頂端的距離。 默認值:0
endMargin[Length]分割線與側(cè)邊欄底端的距離。 默認值:0

說明:

針對側(cè)邊欄子組件設置[通用屬性寬高]時,寬高都不生效。 針對側(cè)邊欄內(nèi)容區(qū)設置[通用屬性寬高]時,寬高都不生效,默認占滿SideBarContainer的剩余空間。

當showSideBar屬性未設置時,依據(jù)組件大小進行自動顯示:

  • 小于minSideBarWidth + minContentWidth:默認不顯示側(cè)邊欄。
  • 大于等于minSideBarWidth + minContentWidth:默認顯示側(cè)邊欄。

事件

除支持[通用事件]外,還支持以下事件:

名稱HarmonyOSOpenHarmony鴻蒙文檔籽料:mau123789是v直接拿功能描述
onChange(callback: (value: boolean) => void)當側(cè)邊欄的狀態(tài)在顯示和隱藏之間切換時觸發(fā)回調(diào)。true表示顯示,false表示隱藏。 觸發(fā)該事件的條件: 1、showSideBar屬性值變換時; 2、showSideBar屬性自適應行為變化時; 3、分割線拖拽觸發(fā)autoHide時。

搜狗高速瀏覽器截圖20240326151547.png

示例

// xxx.ets
@Entry
@Component
struct SideBarContainerExample {
  normalIcon: Resource = $r("app.media.icon")
  selectedIcon: Resource = $r("app.media.icon")
  @State arr: number[] = [1, 2, 3]
  @State current: number = 1

  build() {
    SideBarContainer(SideBarContainerType.Embed) {
      Column() {
        ForEach(this.arr, (item: number) = > {
          Column({ space: 5 }) {
            Image(this.current === item ? this.selectedIcon : this.normalIcon).width(64).height(64)
            Text("Index0" + item)
              .fontSize(25)
              .fontColor(this.current === item ? '#0A59F7' : '#999')
              .fontFamily('source-sans-pro,cursive,sans-serif')
          }
          .onClick(() = > {
            this.current = item
          })
        }, (item: string) = > item)
      }.width('100%')
      .justifyContent(FlexAlign.SpaceEvenly)
      .backgroundColor('#19000000')


      Column() {
        Text('SideBarContainer content text1').fontSize(25)
        Text('SideBarContainer content text2').fontSize(25)
      }
      .margin({ top: 50, left: 20, right: 30 })
    }
    .controlButton({
      icons: {
        hidden: $r('app.media.drawer'),
        shown: $r('app.media.drawer'),
        switching: $r('app.media.drawer')
      }
    })
    .sideBarWidth(150)
    .minSideBarWidth(50)
    .maxSideBarWidth(300)
    .minContentWidth(0)
    .onChange((value: boolean) = > {
      console.info('status:' + value)
    })
    .divider({ strokeWidth: '1vp', color: Color.Gray, startMargin: '4vp', endMargin: '4vp' })
  }
}

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 組件
    +關注

    關注

    1

    文章

    498

    瀏覽量

    17771
  • 鴻蒙
    +關注

    關注

    57

    文章

    2287

    瀏覽量

    42629
收藏 人收藏

    評論

    相關推薦

    鴻蒙ArkTS容器組件:Column

    沿垂直方向布局的容器。
    的頭像 發(fā)表于 07-05 16:32 ?338次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>ArkTS</b><b class='flag-5'>容器</b><b class='flag-5'>組件</b>:Column

    鴻蒙ArkTS容器組件:Flex

    以彈性方式布局子組件容器組件
    的頭像 發(fā)表于 07-08 10:19 ?340次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>ArkTS</b><b class='flag-5'>容器</b><b class='flag-5'>組件</b>:Flex

    鴻蒙ArkTS容器組件:FlowItem

    [瀑布流組件]的子組件,用來展示瀑布流具體item。
    的頭像 發(fā)表于 07-08 09:56 ?268次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>ArkTS</b><b class='flag-5'>容器</b><b class='flag-5'>組件</b>:FlowItem

    鴻蒙ArkTS容器組件:GridCol

    柵格子組件,必須作為柵格容器組件([GridRow])的子組件使用。
    的頭像 發(fā)表于 07-08 15:17 ?307次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>ArkTS</b><b class='flag-5'>容器</b><b class='flag-5'>組件</b>:GridCol

    鴻蒙ArkTS容器組件:GridItem

    網(wǎng)格容器中單項內(nèi)容容器。
    的頭像 發(fā)表于 07-09 09:25 ?288次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>ArkTS</b><b class='flag-5'>容器</b><b class='flag-5'>組件</b>:GridItem

    鴻蒙ArkTS容器組件:ListItem

    可以包含單個子組件。
    的頭像 發(fā)表于 07-10 15:41 ?488次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>ArkTS</b><b class='flag-5'>容器</b><b class='flag-5'>組件</b>:ListItem

    鴻蒙ArkTS容器組件:ListItemGroup

    組件用來展示列表item分組,寬度默認充滿[List]組件,必須配合List組件來使用。
    的頭像 發(fā)表于 07-10 09:20 ?480次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>ArkTS</b><b class='flag-5'>容器</b><b class='flag-5'>組件</b>:ListItemGroup

    鴻蒙ArkTS容器組件:Navigator

    路由容器組件,提供路由跳轉(zhuǎn)能力。
    的頭像 發(fā)表于 07-10 14:55 ?317次閱讀

    鴻蒙ArkTS容器組件:Refresh

    可以進行頁面下拉操作并顯示刷新動效的容器組件。
    的頭像 發(fā)表于 07-11 16:11 ?363次閱讀

    鴻蒙ArkTS容器組件:RowSplit

    將子組件橫向布局,并在每個子組件之間插入一根縱向的分割線。
    的頭像 發(fā)表于 07-11 22:25 ?224次閱讀

    鴻蒙ArkTS容器組件:Scroll

    可滾動的容器組件,當子組件的布局尺寸超過父組件的尺寸時,內(nèi)容可以滾動。
    的頭像 發(fā)表于 07-12 15:24 ?927次閱讀

    鴻蒙ArkTS容器組件:Stack

    堆疊容器,子組件按照順序依次入棧,后一個子組件覆蓋前一個子組件。
    的頭像 發(fā)表于 07-15 18:23 ?744次閱讀

    鴻蒙ArkTS容器組件:Swiper

    滑塊視圖容器,提供子組件滑動輪播顯示的能力。
    的頭像 發(fā)表于 07-15 09:51 ?427次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>ArkTS</b><b class='flag-5'>容器</b><b class='flag-5'>組件</b>:Swiper

    鴻蒙ArkTS容器組件:Tabs

    通過頁簽進行內(nèi)容視圖切換的容器組件,每個頁簽對應一個內(nèi)容視圖。
    的頭像 發(fā)表于 07-15 09:48 ?567次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>ArkTS</b><b class='flag-5'>容器</b><b class='flag-5'>組件</b>:Tabs

    鴻蒙ArkTS容器組件:WaterFlow

    瀑布流容器,由“行”和“列”分割的單元格所組成,通過容器自身的排列規(guī)則,將不同大小的“項目”自上而下,如瀑布般緊密布局。
    的頭像 發(fā)表于 07-15 17:35 ?340次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>ArkTS</b><b class='flag-5'>容器</b><b class='flag-5'>組件</b>:WaterFlow