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

鸿蒙HarmonyOS学习笔记(8)

如何实现ArkUI组件字符串变量拼接

问题现象

例如:Text()组件的字符串变量拼接功能,如何实现?

Text($r('app.string.EntryAbility_desc', 'Hello'))

解决措施

可以通过资源文件结合%d、%s的方式进行实现。

示例如下所示:

  1. 修改"src/main/resources/zh_CN/element/string.json"文件,对其中的一个需要变量拼接内容增加%d拼接。

    { 
      "string": [ 
        { 
          "name": "module_desc", 
          "value": "模块描述%d" 
        }, 
        { 
          "name": "EntryAbility_desc", 
          "value": "description" 
        }, 
        { 
          "name": "EntryAbility_label", 
          "value": "label" 
        } 
      ] 
    }

    修改"src/main/resources/en_US/element/string.json"文件,对其中的一个需要变量拼接内容增加%d拼接。

    { 
      "string": [ 
        { 
          "name": "module_desc", 
          "value": "module description%d" 
        }, 
        { 
          "name": "EntryAbility_desc", 
          "value": "description%d" 
        }, 
        { 
          "name": "EntryAbility_label", 
          "value": "label" 
        } 
      ] 
    }

  2. 在页面组件中使用$r(xx)加上拼接变量进行使用。

    @Entry 
    @Component 
    struct Page1 { 
      @State num1: number = 100; 
     
      build() { 
        Row() { 
          Column() { 
            Text($r('app.string.module_desc', this.num1)) 
              .fontSize(50) 
              .fontWeight(FontWeight.Bold) 
          } 
          .width('100%') 
        } 
        .height('100%') 
      } 
    }

  3. 切换中英文语言时,会自动跟随语言的切换带入对应的变量信息。

    单HAP包应用资源

  • 通过"$r"或"$rawfile"访问资源。

    对于“color”、“float”、“string”、“plural”、“media”、“profile”等类型的资源,通过"$r('app.type.name')"形式访问。其中,app为resources目录中定义的资源;type为资源类型或资源的存放位置;name为资源名,开发者定义资源时确定。

    对于string.json中使用多个占位符的情况,通过$r('app.string.label','aaa','bbb',444)形式访问。

    对于rawfile目录资源,通过"$rawfile('filename')"形式访问。其中,filename为rawfile目录下文件的相对路径,文件名需要包含后缀,路径开头不可以"/"开头。

  • 资源组目录下的“资源文件示例”显示了.json文件内容,包含color.json文件、string.json文件和plural.json文件,访问应用资源时需先了解.json文件的使用规范。

    资源的具体使用方法如下:

      //通过$r('app.type.name')访问
      Text($r('app.string.string_hello'))
      .fontColor($r('app.color.ohos_id_color_emphasize'))
      .fontSize($r('app.float.ohos_id_text_size_headline1'))
      .fontFamily($r('app.string.ohos_id_text_font_family_medium'))
      .backgroundColor($r('app.color.ohos_id_color_palette_aux1'))
    
      Image($r('app.media.ohos_app_icon'))
      .border({
        color: $r('app.color.ohos_id_color_palette_aux1'),
        radius: $r('app.float.ohos_id_corner_radius_button'), width: 2
      })
      .margin({
        top: $r('app.float.ohos_id_elements_margin_horizontal_m'),
        bottom: $r('app.float.ohos_id_elements_margin_horizontal_l')
      })
      .height(200)
      .width(300)
    
      //对占位符,通过$r('app.string.label','aaa','bbb',444)访问
      Text($r('app.string.message_notification','LiHua',2))
  • 通过本应用上下文获取ResourceManager后,调用不同资源管理接口访问不同资源。

    例如:getContext().resourceManager.getStringByNameSync('test') 可获取字符串资源;getContext().resourceManager.getRawFd('rawfilepath') 可获取Rawfile所在hap包的descriptor信息,访问rawfile文件时需{fd, offset, length}一起使用。


http://www.kler.cn/a/455019.html

相关文章:

  • Substrate Saturday 回顾:如何利用 Polkadot Cloud 扩展 Solana 网络服务?
  • Docker【初识Docker】
  • C#控件开发3—文本显示、文本设值
  • 前端:改变鼠标点击物体的颜色
  • MyBatis如何处理延迟加载?
  • 基于Spring Boot的工商局商家管理系统
  • 各种数据库类型介绍
  • Python函数机制
  • 美畅物联丨如何通过视频汇聚平台汇聚视频并推送至上级28181平台
  • vue2/3,Spring Boot以及生产环境跨域解决方案
  • LabVIEW条件配置对话框
  • 互联网十万个为什么之什么是微服务
  • PSINS工具箱函数介绍——kfplot
  • oracle基础:中文字段排序详解
  • 音视频入门知识(五):流媒体篇
  • mysql部署(5.7.31)
  • 图研院 | 掌握前沿图技术,从 “Graph XAI” 课程起航
  • 01-c++对c的扩展(上)
  • FOC软件 STM32CubeMX 使用
  • 【玩转OCR】 | 腾讯云智能结构化OCR在多场景的实际应用与体验
  • 头歌-边缘检测
  • AT24C02学习笔记
  • 【EDA】Gate Sizing算法
  • 基于springboot的论坛管理系统丨源码+数据库+万字文档+PPT
  • 在blender中 导出模型给threejs 用3dsprite出现缩放或者位置不对问题排查
  • 玩转OCR | 腾讯云智能结构化OCR推动跨行业高效精准的文档处理与数据提取新时代