当前位置: 首页 > news >正文

三、分类模块,通用组件顶部导航栏Navbar

1.封装通用组件顶部导航栏Navbar

不同效果

@Component
export struct MkNavbar {
  @Prop title: string = ''
  @Prop leftIcon: ResourceStr = $r("app.media.ic_public_left")
  @Prop
  rightIcon: ResourceStr = $r("app.media.ic_public_more")
  @Prop
  showLeftIcon: boolean = true
  @Prop
  showRightIcon: boolean = false
  @Prop
  color: ResourceColor = $r("app.color.black")
  @Prop
  bg: ResourceColor = $r("app.color.white")
  // 点击左侧事件
  onLeftClick: () => void = () => {
  }
  onRightClick: () => void = () => {
  }

  @Builder
  defaultBuilder() {
  }

  // 接收参数是Builder类型
  @BuilderParam
  customTitle: () => void = this.defaultBuilder // 可以给也可以不给 不给的话预览器会有报错(编辑器的bug)

  build() {
    RelativeContainer() {
      if (this.showLeftIcon) {
        Image(this.leftIcon)
          .fillColor(this.color)
          .width(30)
          .aspectRatio(1)
          .alignRules({
            center:{
              anchor:'__container__',
              align:VerticalAlign.Center
            },


          })
          .onClick(()=>{
            this.onLeftClick()
          })
      }
      if(this.showRightIcon){
        Image(this.rightIcon)
          .fillColor(this.color)
        .width(30)
          .aspectRatio(1)
          .alignRules({
            center:{
              anchor:'__container__',
              align:VerticalAlign.Center
            },
            right:{

              anchor:'__container__',
              align:HorizontalAlign.End
            }
          })
          .onClick(() => {
            this.onRightClick()
          })
      }
      if(this.title){
        Text(this.title)
          .fontWeight(600)
        .fontColor(this.color)
          .alignRules({
            center:{
              anchor:'__container__',
              align:VerticalAlign.Center
            },
            middle:{
              anchor:'__container__',
              align:HorizontalAlign.Center
            }
          })

      }
      if (this.customTitle) {
        this.customTitle() // 传入的builder被调用了
      }
    }.padding({
      left: 10,
      right: 10
    })
    .width("100%")
    .height(50)
    .backgroundColor(this.bg)
  }
}

http://www.dtcms.com/a/99950.html

相关文章:

  • AireOS WLC安装License报错
  • Pytorch中torch.nn的学习
  • ‌19.思科路由器:OSPF协议引入直连路由的实验研究
  • keil自学笔记3(按键)
  • sqli-labs靶场 less 11
  • Qt warning LNK4042: 对象被多次指定;已忽略多余的指定
  • 机器学习的一百个概念(3)上采样
  • 创作领域“<em >一</em><em>分</em><em>快</em><em>3</em><em>官</em><em>网
  • Java 8 时区与历法处理指南:跨越全球的时间管理
  • Day50 单词规律
  • 小智机器人相关函数解析,BackgroundTask::Schedule (***)将一个回调函数添加到后台任务队列中等待执行
  • 多人协同进行qt应用程序开发应该注意什么?
  • ai画图flux redux图像文本双重引导生成。
  • Axios 相关的面试题
  • 注入工具SQLMAPTamper 编写指纹修改高权限操作目录架构
  • Nginx实现动静分离配置
  • JavaScript 网页开发设计案例:构建动态看板任务管理器 (Kanban Board)
  • 飞致云荣获“Alibaba Cloud Linux最佳AI镜像服务商”称号
  • GPT-4o 原生图像生成技术解析:从模型架构到吉卜力梦境的实现
  • 代码规范之空行思路和原则
  • python虚拟环境使用
  • 1500 字节 MTU | 溯源 / 技术权衡 / 应用影响
  • 代码随想录刷题day56|(回溯算法篇)46.全排列(非去重)、47.全排列 II(去重)
  • UE4学习笔记 FPS游戏制作32 主菜单,暂停游戏,显示鼠标指针
  • 学习threejs,使用Sprite精灵、SpriteMaterial精灵材质
  • 前端全局编程和模块化编程
  • [笔记.AI]大模型训练 与 向量值 的关系
  • vue3 + ant-design-vue4实现Select既可以当输入框也可以实现下拉选择
  • sqli-labs学习记录8
  • Spring 项目中跨数据源(多数据源)调用时 @DS 注解失效或不生效