鴻蒙 HarmonyOS - SideBarContainer 組件自學指南

在日常開發中,如果你有類似「左側導航 + 右側內容」的布局需求,比如后臺管理界面、文件管理器、設置頁等,??SideBarContainer?? 是非常值得掌握的組件。它自帶側邊欄和主內容區的分離機制,還支持折疊、拖拽、控制按鈕和多種顯示模式,是構建復雜頁面結構的好幫手。

這篇文章將從實際開發視角出發,用一段簡化的示例代碼,帶你快速掌握 ??SideBarContainer?? 的使用方法,并逐步解析核心屬性與交互行為。


組件簡介

??SideBarContainer?? 是 HarmonyOS 提供的一個雙區域容器,固定由兩個子組件組成:

  • 第一個子組件表示側邊欄;
  • 第二個子組件表示主內容區。

組件內部已實現側邊欄的顯示與隱藏邏輯,開發者只需關注如何傳入正確結構和控制顯示行為即可。

支持三種布局類型:

  • ??Embed??:并排展示;
  • ??Overlay??:側邊欄懸浮;
  • ??Auto??:根據容器寬度自動選擇 Embed 或 Overlay。

示例場景:基本側邊欄菜單布局

下面是一個常見的布局案例:左邊是圖標 + 文本菜單項,右邊是內容展示區。

@Entry
@Component
struct SideBarContainerExample {normalIcon: Resource = $r("app.media.startIcon")selectedIcon: Resource = $r("app.media.startIcon")@State arr: number[] = [1, 2, 3]@State current: number = 1build() {SideBarContainer(SideBarContainerType.Embed) {// 左側導航欄Column() {ForEach(this.arr, (item: number) => {Column({ space: 5 }) {Image(this.current === item ? this.selectedIcon : this.normalIcon).width(48).height(48)Text("菜單 " + item).fontSize(20).fontColor(this.current === item ? '#0A59F7' : '#777').fontFamily('HarmonyOS Sans')}.onClick(() => {this.current = item})}, (item: number) => item.toString())}.width('100%').justifyContent(FlexAlign.Center).alignItems(HorizontalAlign.Center).backgroundColor('#F3F3F3')// 右側主內容區Column() {Text(`當前內容:菜單 ${this.current}`).fontSize(24).fontWeight(FontWeight.Medium)Text('這是側邊欄對應的內容區,可根據選擇進行切換').fontSize(18).margin({ top: 10 })}.padding({ top: 50, left: 20, right: 20 })}.controlButton({left: 12,top: 40,width: 28,height: 28,icons: {hidden: $r('app.media.startIcon'),shown: $r('app.media.startIcon'),switching: $r('app.media.startIcon')}}).sideBarWidth(180).minSideBarWidth(60).maxSideBarWidth(280).minContentWidth(300).divider({strokeWidth: '2vp',color: '#CCCCCC',startMargin: '6vp',endMargin: '6vp'}).onChange((visible: boolean) => {console.info('側邊欄當前狀態:' + (visible ? '顯示' : '隱藏'))})}
}

在這里插入圖片描述

核心知識點說明

子組件數量限制

  • 必須且只能兩個子組件,否則布局會異常。
  • 一個子組件 → 只展示側邊欄。
  • 超過兩個 → 只保留前兩個。

顯示模式控制

通過構造函數傳入 ??SideBarContainerType?? 類型參數控制顯示樣式,推薦用法:

  • ??.Embed??:固定并排展示;
  • ??.Overlay??:懸浮在內容上;
  • ??.Auto??:根據整體寬度智能切換模式。

尺寸控制參數

方法名說明
??.sideBarWidth()??默認寬度
??.minSideBarWidth()??拖拽最小寬度
??.maxSideBarWidth()??拖拽最大寬度
??.minContentWidth()??內容區最小展示寬度

尺寸單位通常用 ??vp???,支持直接傳入數字,也支持百分比和 ??Length?? 類型。

控制按鈕樣式

通過 ??.controlButton({...})?? 方法自定義控制按鈕的大小、位置與圖標,圖標支持:

  • ??shown??:側邊欄展開時;
  • ??hidden??:側邊欄隱藏時;
  • ??switching??:切換中狀態。

圖標資源建議使用 PixelMap 或 ??$r()?? 形式引用本地媒體資源。

分割線樣式

通過 ??.divider({...})?? 方法自定義側邊欄和內容區中間的分隔線,支持設置線寬、顏色、邊距等。


常見問題說明

  1. 側邊欄高度怎么控制?
  • 側邊欄會自動繼承容器高度,建議不要直接設置 ??height??。
  1. 寬度設置無效?
  • 注意:不能直接對側邊欄子組件設置 ??width???,請統一用 ??.sideBarWidth()?? 控制。
  1. 如何響應收起 / 展開狀態變化?
  • 使用 ??.onChange()?? 監聽器獲取當前狀態,可用于聯動 UI 或輸出日志。

總結建議

??SideBarContainer?? 是構建復雜結構頁面時非常實用的組件,重點在于理解它對子組件數量的限制、布局樣式的選擇邏輯、以及各類尺寸控制參數。實際使用中,可以與頁面狀態管理、資源圖標切換等邏輯配合,構建出靈活可交互的側邊欄體驗。

建議從 Embed 模式開始練習,等熟悉后再嘗試 Overlay 或 Auto 模式的布局響應性處理。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/83168.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/83168.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/83168.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

CppCon 2014 學習:Practical Functional Programming

這段內容是對**在 C 中使用函數式編程(Functional Programming, FP)**可以做什么的簡要介紹,下面是逐條的翻譯與理解: Introduction 簡介 在 C 中使用函數式編程(FP)可以做什么? 1. 編寫強大…

飛牛NAS+Docker技術搭建個人博客站:公網遠程部署實戰指南

文章目錄 前言1. Docker下載源設置2. Docker下載WordPress3. Docker部署Mysql數據庫4. WordPress 參數設置5. 飛牛云安裝Cpolar工具6. 固定Cpolar公網地址7. 修改WordPress配置文件8. 公網域名訪問WordPress總結 前言 在數字化浪潮中,傳統網站搭建方式正面臨前所未…

ComfyUI+阿里Wan2.1+內網穿透技術:本地AI視頻生成系統搭建實戰

文章目錄 前言1.軟件準備1.1 ComfyUI1.2 文本編碼器1.3 VAE1.4 視頻生成模型 2.整合配置3. 本地運行測試4. 公網使用Wan2.1模型生成視頻4.1 創建遠程連接公網地址 5. 固定遠程訪問公網地址總結 前言 各位技術愛好者,今天為您帶來一組創新性的AI應用方案&#xff01…

n8n:技術團隊的智能工作流自動化助手

在當前數字化時代,自動化已經成為提高效率和減輕人工工作負擔的一大推動力。今天,我們要為大家介紹一款極具潛力的開源項目——n8n,它不僅擁有廣泛的應用場景,還具備內置AI功能,能夠完全滿足技術團隊的高效工作需求。n8n的出現,為技術團隊提供了自由編程與快速自動化構建…

1,QT的編譯教程

目錄 整體流程: 1,新建project文件 2,編寫源代碼 3,打開QT的命令行窗口 4,生成工程文件(QT_demo.pro) 5,生成Make file 6,編譯工程 7,運行編譯好的可執行文件 整體流程: 1,新建project文件 新建文本文件,后綴改為.cpp 2,編寫源代碼

深度學習論文: FastVLM: Efficient Vision Encoding for Vision Language Models

深度學習論文: FastVLM: Efficient Vision Encoding for Vision Language Models FastVLM: Efficient Vision Encoding for Vision Language Models PDF: https://www.arxiv.org/abs/2412.13303 PyTorch代碼: https://github.com/shanglianlm0525/CvPytorch PyTorch代碼: https…

十一、【核心功能篇】測試用例管理:設計用例新增編輯界面

【核心功能篇】測試用例管理:設計用例新增&編輯界面 前言準備工作第一步:創建測試用例相關的 API 服務 (src/api/testcase.ts)第二步:創建測試用例編輯頁面組件 (src/views/testcase/TestCaseEditView.vue)第三步:配置測試用例…

三、web安全-信息收集

1、信息搜集的重要性 (1)明確攻擊面 信息搜集能讓滲透測試人員清晰地勾勒出目標系統的邊界,包括其網絡拓撲結構、開放的服務端口、運行的軟件系統等。例如,通過信息搜集發現目標企業除了對外提供官網服務外,還有一個…

生活小記啊

最近生活上的事情還是蠻多的,想到哪寫到哪。 工作 三月的某個周六,正在加班寫技術方案,大晚上寫完了聽到調動通知,要去新的團隊了。 還是蠻不舍的,看著產品從無到有,一路走過來,傾注了不少感…

vue-08(使用slot進行靈活的組件渲染)

使用slot進行靈活的組件渲染 作用域slot是 Vue.js 中的一種強大機制,它允許父組件自定義子組件內容的呈現。與僅向下傳遞數據的常規 props 不同,作用域 slot 為父級提供了一個模板,然后子級可以填充數據。這提供了高度的靈活性和可重用性&am…

MySQL索引與性能優化入門:讓查詢提速的秘密武器【MySQL系列】

本文將深入講解 MySQL 索引的底層原理、常見類型、使用技巧,并結合 EXPLAIN 工具分析查詢執行計劃,配合慢查詢日志識別瓶頸,逐步建立起系統的 MySQL 查詢優化知識體系。適合有一定基礎、希望在數據量增長或面試中脫穎而出的開發者閱讀。 一、…

C 語言開發中常見的開發環境

目錄 1.Dev-C 2.Visual Studio Code 3.虛擬機 Linux 環境 4.嵌入式 MCU 專用開發環境 1.Dev-C 使用集成的 C/C 開發環境(適合基礎學習),下載鏈接Dev-C下載 - 官方正版 - 極客應用 2.Visual Studio Code 結合 C/C 擴展 GCC/MinGW 編譯器&#xff0c…

STM32G4 電機外設篇(二) VOFA + ADC + OPAMP

目錄 一、STM32G4 電機外設篇(二) VOFA ADC OPAMP1 VOFA1.1 VOFA上位機顯示波形 2 ADC2.1 用ADC規則組對板載電壓和電位器進行采樣 3 OPAMP(運放)3.1 結合STM32內部運放和ADC來完成對三相電流的采樣3.2 運放電路分析 附學習參考…

再見Notepad++,你好Notepad--

Notepad-- 是一款國產開源的輕量級、跨平臺文本編輯器,支持 Window、Linux、macOS 以及國產 UOS、麒麟等操作系統。 除了具有常用編輯器的功能之外,Notepad-- 還內置了專業級的代碼對比功能,支持文件、文件夾、二進制文件的比對,支…

跳動的愛心

跳動的心形圖案&#xff0c;通過字符打印和延時效果模擬跳動&#xff0c;心形在兩種大小間交替跳動。 通過數學公式生成心形曲線 #include <stdio.h> #include <windows.h> // Windows 系統頭文件&#xff08;用于延時和清屏&#xff09; void printHeart(int …

2.2HarmonyOS NEXT高性能開發技術:編譯優化、內存管理與并發編程實踐

HarmonyOS NEXT高性能開發技術&#xff1a;編譯優化、內存管理與并發編程實踐 在HarmonyOS NEXT全場景設備開發中&#xff0c;高性能是跨端應用體驗的核心保障。本章節聚焦ArkCompiler編譯優化、內存管理工具及多線程并發編程三大技術模塊&#xff0c;結合實戰案例解析底層實現…

C# 類和繼承(使用基類的引用)

使用基類的引用 派生類的實例由基類的實例和派生類新增的成員組成。派生類的引用指向整個類對象&#xff0c;包括 基類部分。 如果有一個派生類對象的引用&#xff0c;就可以獲取該對象基類部分的引用&#xff08;使用類型轉換運算符把 該引用轉換為基類類型&#xff09;。類…

如何在騰訊云 OpenCloudOS 上安裝 Docker 和 Docker Compose

從你提供的 /etc/os-release 文件內容來看&#xff0c;你的服務器運行的是 OpenCloudOS 9.2。這是一個基于 CentOS 和 RHEL 的開源操作系統&#xff0c;因此它屬于 CentOS/RHEL 系列。 關鍵信息總結 操作系統名稱&#xff1a;OpenCloudOS版本&#xff1a;9.2ID&#xff1a;op…

趨勢直線指標

趨勢直線副圖和主圖指標&#xff0c;旨在通過技術分析工具幫助交易者識別市場趨勢和潛在的買賣點。 副圖指標&#xff1a;基于KDJ指標的交易策略 1. RSV值計算&#xff1a; - RSV&#xff08;未成熟隨機值&#xff09;反映了當前收盤價在過去一段時間內的相對位置。通過計算當前…

FEMFAT許可分析的數據可視化方法

隨著企業對FEMFAT軟件使用的增加&#xff0c;如何有效地管理和分析許可數據成為了關鍵。數據可視化作為一種強大的工具&#xff0c;能夠幫助企業直觀地理解FEMFAT許可的使用情況&#xff0c;從而做出更明智的決策。本文將介紹FEMFAT許可分析的數據可視化方法&#xff0c;并探討…