鸿蒙 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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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;并探讨…