HarmonyOS:通过组件导航设置标题栏动态显隐及隐藏类型

一、场景介绍

从6.0.0(20) Beta1版本开始,导航组件新增支持设置标题栏动态显隐及隐藏类型。

当应用开发者需要动态隐藏标题栏时,可通过使用dynamicHideTitleBar属性实现该功能。设置隐藏标题区域前提下,才可以设置隐藏状态栏。

二、开发示例

效果图

示例代码 TestUIDesign5.ets

bash 复制代码
import { HdsNavigation, HdsNavigationAttribute, BottomBuilderShowType, HideMode } from '@kit.UIDesignKit';

@Entry
@Component
struct TestUIDesign5 {
  @State arr: number[] = [];

  // 创建一级导航组件,通过配置titleBar中menu的badge属性,设置信息提醒样式。

  aboutToAppear(): void {
    for (let index = 0; index < 40; index++) {
      this.arr.push(index);
    }
  }

  @Styles
  listCard() {
    .backgroundColor(Color.White)
    .height(72)
    .width('calc(100% - 20vp)')
    .borderRadius(12)
    .margin({ left: 10, right: 10 })
  }

  @Builder
  StackBuilder() { // 自定义StackBuilder组件
    Column() {
      Button("Hello")
    }
    .height(56)
    .justifyContent(FlexAlign.Center)
  }

  @Builder
  BottomBuilder() { // 自定义BottomBuilder组件
    Column() {
      Search().margin({ left: 16, right: 16 })
    }
    .width('100%')
    .height(56)
  }

  build() {
    HdsNavigation() { // 创建HdsNavigation组件
      // HdsNavigation组件内容区
      Scroll(){
        Column({ space: 10 }) {
          Image($r('app.media.mount'))
            .width('100%')
            .height(300)
            .margin({top: 200})
          List({ space: 10 }) {
            ForEach(this.arr, (item: number) => {
              ListItem() {
                Text("item " + item)
                  .fontSize(20)
                  .fontColor(Color.Black)
              }.listCard()

            }, (item: number) => item.toString())
          }
          .padding({ bottom: 30 })
          .edgeEffect(EdgeEffect.Spring)
        }
        .width('100%')
      }
    }.titleBar({
      content: {
        // 设置HdsNavigation组件内容区
        title: { mainTitle: 'MainTitle', subTitle: 'SubTitle' },
        // 设置HdsNavigation StackBuilder区域
        stackBuilder: (): void => this.StackBuilder(),
        // 设置HdsNavigation BottomBuilder区域,包括设置高度,显示类型
        bottomBuilder: {
          builder: (): void => this.BottomBuilder(),
          height: 56,
          showType: BottomBuilderShowType.DIRECTLY_SHOW
        }
      }
    })
    // 设置HdsNavigation标题栏动态显隐,包括设置标题区域,bottomBuilder区域,状态栏区域是否动态隐藏,隐藏模式以及开始隐藏时内容区的滚动距离。
    .dynamicHideTitleBar({ hideTitleArea:true, hideBottomBuilder: true, hideStatusBar: false, mode: HideMode.SCROLL_UP_TO, hideOffset: 10 })
    .backgroundColor(Color.White)
  }
}
相关推荐
狼哥168612 小时前
蛋糕美食元服务_我的实现指南
ui·harmonyos
祭曦念12 小时前
BLOG_垃圾分类查询应用开发实战
华为·harmonyos
狼哥168612 小时前
蛋糕美食元服务_美食实现指南
ui·harmonyos
王二蛋与他的张大花14 小时前
高德地图 Flutter 插件:跨 Android / iOS / HarmonyOS 的完整实现
harmonyos
狼哥168614 小时前
蛋糕美食元服务_地图实现指南
ui·harmonyos
JohnnyDeng9416 小时前
【鸿蒙】HarmonyOS 数据持久化:Preferences/KV Store/RelationalStore 选型指南
harmonyos·arkts·鸿蒙·数据持久化·arkui
小雨青年16 小时前
【鸿蒙原生开发会议随记 Pro】用 NavPathStack 收拢会议页面跳转和返回刷新
华为·harmonyos
轻口味17 小时前
轻规划鸿蒙开发实战3:AR Engine Kit 深度实践,基于面部追踪与骨骼捕捉的体感微笑打
华为·ar·harmonyos·鸿蒙
Swift社区17 小时前
鸿蒙 App 为什么需要统一状态源?
华为·harmonyos
星释17 小时前
HDC 2026 跨平台框架专题:HarmonyOS 生态下的跨端技术全景
华为·harmonyos