• HarmonyOS应用开发-常用组件与布局


    基础组件

    Text

    • 功能:用于显示文本内容。
    • 属性:可以设置文本颜色、字体大小、字体样式、字体粗细和字体族。
    参数名称参数类型描述
    fontColorResourceColor设置文本颜色。
    fontSizeLength | Resource设置文本尺寸,Length为number类型时,使用fp单位。
    fontStyleFontStyle设置文本的字体样式。默认值:FontStyle.Normal。
    fontWeightnumber | FontWeight | string设置文本的字体粗细,number类型取值[100, 900],取值间隔为100,默认为400,取值越大,字体越粗。string类型支持number类型取值的字符串形式,例如“400”,以及“bold”、“bolder”、“lighter”、“regular”、“medium”,分别对应FontWeight中相应的枚举值。默认值:FontWeight.Normal。
    fontFamilystring | Resource设置文本的字体列表。使用多个字体,使用“,”进行分割,优先级按顺序生效。例如:“Arial,sans-serif”。
    • 示例代码
    Text()
      .fontColor(Color.Blue)
      .fontSize(20)
      .fontStyle(FontStyle.Italic)
      .fontWeight(FontWeight.Bold)
      .fontFamily('Arial')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    Image

    • 功能:用于显示图像。
    • 属性:包括图像的缩放类型、背景颜色、宽度和高度。
      示例代码:
    参数名称参数类型描述
    objectFitImageFit设置图片的缩放类型。
    backgroundColorColor设置图片的背景颜色。
    widthLength设置图片的宽度。
    heightLength设置图片的高度。
    • 示例代码
    Image($r("app.media.image1"))
      .objectFit(ImageFit.Cover)
      .backgroundColor(0xCCCCCC)
      .width(100)
      .height(100)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    TextInput

    • 功能:用于接收用户输入的单行文本。
    • 属性:可以设置文本样式、提示文本、输入类型、光标位置等。
    功能示例代码
    基础TextInput设置TextInput()
    - 字体颜色.fontColor(Color.Blue)
    - 字体大小.fontSize(20)
    - 字体样式.fontStyle(FontStyle.Italic)
    - 字体粗细.fontWeight(FontWeight.Bold)
    - 字体族.fontFamily('Arial')
    输入提示文本设置TextInput({ placeholder: '请输入帐号' })
    - 提示文本颜色.placeholderColor(0x999999)
    - 提示文本样式.placeholderFont({ size: 20, weight: FontWeight.Medium, family: 'cursive', style: FontStyle.Italic })
    输入框类型设置TextInput({ placeholder: '请输入密码' }).type(InputType.Password)
    - 输入类型type 的参数类型为 InputType,包括 NormalPasswordEmailNumber
    设置光标位置使用 TextInputController 动态设置光标位置,例如:this.controller.caretPosition(2)
    获取输入文本设置 onChange 事件,实时获取用户输入的文本信息,例如: TextInput().onChange((value: string) => { this.text = value })
    • 示例代码
    TextInput()
      .fontColor(Color.Blue)
      .fontSize(20)
      .fontStyle(FontStyle.Italic)
      .fontWeight(FontWeight.Bold)
      .fontFamily('Arial')
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    Button

    • 功能:用于响应点击操作,通常用于实现按钮。
    • 属性:可以设置按钮样式、点击事件和包含子组件。
    功能示例代码
    创建登录按钮Button('登录', { type: ButtonType.Capsule, stateEffect: true })
    - 按钮宽度.width('90%')
    - 按钮高度.height(40)
    - 字体大小.fontSize(16)
    - 字体粗细.fontWeight(FontWeight.Medium)
    - 背景颜色.backgroundColor('#007DFF')
    设置按钮样式type 用于定义按钮样式,可以是 ButtonType.CapsuleButtonType.CircleButtonType.NormalstateEffect 用于设置按钮按下时是否开启切换效果。
    设置按钮点击事件绑定 onClick 事件,每当用户点击Button的时候,就会回调执行onClick方法,调用里面的逻辑代码。例如:.onClick(() => { // 处理点击事件逻辑 })
    包含子组件Button组件可以包含子组件,例如包含Image组件,使按钮更丰富多样。
    • 示例代码
    Button('登录', { type: ButtonType.Capsule, stateEffect: true })
      .width('90%')
      .height(40)
      .fontSize(16)
      .fontWeight(FontWeight.Medium)
      .backgroundColor('#007DFF')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    LoadingProgress

    • 功能:用于显示加载进度。
    • 属性:可以设置加载进度的颜色、高度和宽度。
    参数名称参数类型描述
    colorColor设置加载进度的颜色。
    heightLength设置加载进度的高度。
    widthLength设置加载进度的宽度。
    • 示例代码
    LoadingProgress()
      .color(Color.Blue)
      .height(60)
      .width(60)
    
    • 1
    • 2
    • 3
    • 4

    基础容器

    线性布局容器表示按照垂直方向或者水平方向排列子组件的容器,ArkTS提供Column和Row容器组件,Column用于垂直布局,Row用于水平布局。

    基本属性

    容器组件中存在两根轴:主轴和交叉轴。它们始终相互垂直,但它们的方向取决于容器的类型。

    • 主轴:在Column容器中,子组件按垂直方向从上到下排列,主轴方向是垂直的。在Row容器中,子组件按水平方向从左到右排列,主轴方向是水平的。
    • 交叉轴:交叉轴与主轴垂直相交,如果主轴是垂直的,交叉轴就是水平的,反之亦然。
    属性名称描述
    justifyContent设置主轴上的对齐格式。
    alignItems设置交叉轴上的对齐格式。

    主轴方向

    对齐格式描述
    Start元素在主轴方向首端对齐,第一个元素与行首对齐,同时后续的元素与前一个对齐。
    Center元素在主轴方向中心对齐,第一个元素与行首的距离以及最后一个元素与行尾距离相同。
    End元素在主轴方向尾部对齐,最后一个元素与行尾对齐,其他元素与后一个对齐。
    SpaceBetween元素在主轴方向均匀分配弹性元素,相邻元素之间距离相同。第一个元素与行首对齐,最后一个元素与行尾对齐。
    SpaceAround元素在主轴方向均匀分配弹性元素,相邻元素之间距离相同。第一个元素到行首的距离和最后一个元素到行尾的距离是相邻元素之间距离的一半。
    SpaceEvenly元素在主轴方向等间距布局,无论是相邻元素还是边界元素到容器的间距都一样。

    Column

    对齐格式描述
    Start设置子组件在水平方向上按照起始端对齐。
    Center (默认值)设置子组件在水平方向上居中对齐。
    End设置子组件在水平方向上按照末端对齐。

    Row

    对齐格式描述
    Top设置子组件在垂直方向上居顶部对齐。
    Center (默认值)设置子组件在垂直方向上居中对齐。
    Bottom设置子组件在垂直方向上居底部对齐。

    示例代码

    @Entry
    @Component
    export struct LoginPage {
      build() {
        Column() {
          Image($r('app.media.logo'))
            ...
          Text($r('app.string.login_page'))
            ...
          Text($r('app.string.login_more'))
            ...
          TextInput({ placeholder: $r('app.string.account') })
            ...
          TextInput({ placeholder: $r('app.string.password') })
            ...
          Row() {
            Text($r()) 
            Text($r()) 
          }
          Button($r('app.string.login'), { type: ButtonType.Capsule, stateEffect: true })
            ...
          Row() {
            this.imageButton($r())
            this.imageButton($r())
            this.imageButton($r())
          }
          ...
        }
        ...
      }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31

    列表容器

    ArkUI提供了List组件和Grid组件,开发者使用List和Grid组件能够很轻松的完成一些列表页面。

    List组件

    属性描述
    ForEach用于遍历数组并生成列表项,减少代码冗余。
    divider用于自定义列表项之间的分割线,包括线宽、颜色和距离设置。
    onScroll用于监听列表滚动事件,提供滑动偏移量和当前滑动状态。
    onScrollIndex用于监听滑动时的起始位置和结束位置索引值。
    onReachStart用于监听列表到达起始位置的事件。
    onReachEnd用于监听列表到达底部末尾位置的事件。
    onScrollStop用于监听列表滑动停止的事件。
    listDirection用于设置列表项的排列方向,可以是垂直或水平。

    Grid组件

    属性描述
    ForEach用于遍历数组并生成网格布局中的GridItem,可以减少重复代码。
    columnsTemplate用于指定网格的列布局,通过设置每列的宽度分配比例来定义列数和宽度。
    rowsTemplate用于指定网格的行布局,通过设置每行的高度分配比例来定义行数和高度。
    columnsGap用于设置列之间的间距。
    rowsGap用于设置行之间的间距。
    onScrollIndex用于监听滚动时的起始位置和结束位置索引值,可用于实现滚动监听。

    Tabs组件

    属性描述
    barPosition设置页签位置,可以是BarPosition.Start或BarPosition.End。默认值是BarPosition.Start。
    barWidth设置TabBar的宽度。
    barHeight设置TabBar的高度。
    barMode设置Tabs的布局模式,可以是BarMode.Fixed或BarMode.Scrollable。默认值是BarMode.Fixed。
    vertical设置TabBar的排列方向,为true时纵向排列,为false时横向排列。默认值是false。
    TabContent子组件,每一个页签对应一个TabContent组件。
    tabBar用于设置TabBar的显示内容,可以是字符串或使用@Builder修饰的函数。
    TabsController控制页签切换和监听页签变化的控制器。
    onChange监听页签切换时的回调函数。

    结语

    无论是创建简单的文本标签还是实现复杂的按钮操作,HarmonyOS提供了强大的组件,以帮助您构建出色的用户界面。希望这些组件介绍能帮助您更好地理解和利用HarmonyOS的界面开发能力。

  • 相关阅读:
    protobuf序列化和反序列化原理
    为什么页面跟设计稿差距这么大 优漫动游
    【探索C++】string类详解
    HDFS High Availability(HA)高可用配置
    uni-app:js实现数组中的相关处理-数组复制
    VScode 配置用户片段
    Linear Regression in mojo with NDBuffer
    深度学习参数初始化(二)Kaiming初始化 含代码
    推荐系统专题 | 推荐系统架构与单域跨域召回模型
    33、matlab矩阵分解汇总:LU矩阵分解、Cholesky分解、QR分解和SVD分解
  • 原文地址:https://blog.csdn.net/weixin_41908433/article/details/134227349