HarmonyOS 鸿蒙Next基础(三)- 快速弄懂HarmonyOS ArkTs基础组件、布局容器

发布于 1周前 作者 caililin 来自 鸿蒙OS

HarmonyOS 鸿蒙Next基础(三)- 快速弄懂HarmonyOS ArkTs基础组件、布局容器

一、常用基础组件

1.基础组件

简单列举常用的及含义,掌握了以下按钮可以解决日常简单场景需求。其他在使用时查询ArcTS的API文档即可。

组件 含义
Text() 显示一段文本的组件。
Image() 图片组件,支持本地图片和网络图片的渲染展示
TextInput() 单行文本输入框组件
Button 按钮
Blank 空白填充组件,在容器主轴方向上,空白填充组件具有自动填充容器空余部分的能力。仅当父组件为Row/Column时生效
LoadingProgress 显示加载进展

2.文本样式

ArcTS的样式以驼峰命名方式,这里以Text组件为例:

名称 参数类型 描述
fontColor ResourceColor 设置文本颜色
fontSize Length or Resource 设置文本颜色
fontStyle FontStyle 设置文本的字体样式。默认值:FontStyle.Normal
fontWeight numbe or FontWeight or string 设置文本的字体粗细,number类型取值[100, 900],取值间隔为100,默认为400,取值越大,字体越粗。string类型仅支持number类型取值的字符串形式,例如“400”,以及“bold”、“bolder”、“lighter”、“regular”、“medium”,分别对应FontWeight中相应的枚举值。默认值:FontWeight.Normal

下面代码是两个Text组件,分别是默认样式和设置了文本样式的对比。

@Entry
@Component
struct Index {
  @State message: string = 'Hello World';
  @State myText: string = 'World';

  build() {
    Row() {
      Column(){
        Text('ArkTs')
        Text('ArkTs')
          .fontColor(Color.Blue)
          .fontSize(40)
          .fontWeight(FontWeight.Bold)
          .fontFamily('Arial')
      }
    }
    .justifyContent(FlexAlign.Center)
    .backgroundColor(0xF1F3F5)
    .width('100%')
    .height('100%')
  }
}

3.Image

这里着重说一下Image的图片地址的引入方式,方式如下:

Image(src: string|PixelMap|Resource)

(1).使用string数据加载网络图片

Image('https://www.example.com/xxx.png')

这里要注意Image在使用网络图片的时候,需要要在module.json5文件中声明网络访问权限

// module.json5
{
  "module": {
    "requestPermissions": [
      "name": "ohos.permisssion.INTERNET"
    ]
  }
}

(2).使用PixelMap数据加载图片

Image(pixelMapObject)

(3)使用Resource数据加载图片

Image($r('app.media.logo'))

上面的Resource是一种资源引入类型。会在下面详细描述。

4.使用资源引用类型

Resource是资源引用类型,用于设置组件属性的值。ArcTs文档推荐优先使用Resource类型,将资源文件(字符串、图片、音频等)统一存放于resources目录下,便于开发者统一维护。同事系统可以根据当前配置加载合适资源,例如,开发者根据屏幕尺寸呈现不同的布局效果,或根据语言提供不同的字符串。

已上面Text组件代码为例:

Text('ArkTs')
  .fontColor(Color.Blue)
  .fontSize(40)
  .fontWeight(FontWeight.Bold)
  .fontFamily('Arial')

(1).对元素内文本字符串的管理;

可以将这些编码写到entry/src/main/resources下的资源文件中。

在string.json中定义Button显示的文本

在float.json中定义Text的字体样式。

在color.json中定义Text的字体颜色。

然后再Text组件通过$r('app.type.name)的形式引用应用资源。app带表应用内resources目录中定义的资源;type代表资源类型(或资源的存放位置),可以取“color”,“float”、“string”、“plural”、“media”; 以上几种是固定的,不支持自定义命名文件引用。name代表资源命名,由开发者定义资源时确定的。

Text($r('app.string.Index_Text'))
  .fontColor($r('app.color.Text_color'))
  .fontSize($r('app.float.Text_fontSize'))
  .fontWeight(FontWeight.Bold)
  .fontFamily($r('app.float.Text_fontFamily'))

以上是简单的描述Resource引用方式,后面回单独出一期深入研究的Resource引入文章。

二、布局组件

前端常用布局方式header、side、main、footer等标签,还有布局样式flex、grid等,在ArcTs常用布局组件有一下几种:

组件 描述
Column 垂直方向布局的容器
Row 水平方向布局的容器
List 列表容器
Grid 网格容器
Tabs 页签容器
Swiper 滑块视图容器
Scroll 可滑动的容器

这里说一下List,Grid,Tabs,Column、Row使用方法,Swiper、Scroll布局组件相对简单详见Api文档。有点类似小程序的类似组件。

1. Column&Row

布局容器概念

线性布局容器表示垂直方向或者水平方向排列子组件的容器,ArcTs提供了Column和Row容器来实现线性布局。

主轴和交叉轴概念

在布局容器中,默认存在两根轴,分别是主轴和交叉轴,这两个轴始终是相互垂直的。不同的容器中主轴的方向不一样的。

  • 主轴:在Column容器中的子组件是按照从上到下的垂直方向布局,其主轴的方向是垂直方向;在Row容器中的组件时按照从左到右的水平方向布局的,其主轴的方向时水平方向。

下图时Column&Row容器交叉轴

属性

Column&Row容器的两个属性justifyContent和alignItems,类似CSS的flex或Grid的justify-content和align-item。这样容易让我们前端快速理解。

这里注意一下它们的属性值都要首字母大写。

属性名称 描述
justifyContent 设置子组件在主轴方向上的对齐格式
alignItems 设置子组件在交叉轴方向上的对齐格式

主轴方向的对其(justifyContent)

子组件在主轴方向上的使用justifyContent属性来设置,其参数类型时FlexAlign。它有一下几种类型:

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

交叉中方向对齐(alignItems)

Column容器的主轴时垂直方向,交叉轴是水平方向,其参数类型为HorizontalAlign(水平对齐),HorizontalAlign定义了一下几个类型;

属性值 描述
Start 水平方向上按照起始端对齐
Center 水平方向上居中对齐
End 水平方向上按照末端对齐

Row容器的主轴是水平方向,交叉轴是垂直方向,其参数类型为VerticalAlign(垂直对其),VerticalAlign定义了一下几种类型:

属性值 描述
Top 垂直方向上居顶部对齐
Center 竖直方向上居中对齐
Bottom 竖直方向上居底部对齐

接口介绍

Column&Row都课接收一个参数space,表示子组件在主轴上的间距;

@Entry
@Component
struct Index {
  @State TextArr: Array<string> = ["Image", "Text", "TextInput", "Button"]

  build() {
    Column({space: 30}) { // 这里设置子元素主轴上的间距
      ForEach(this.TextArr, (item: string) => { // 利用ForEach渲染我们的字符串数组
        Row(){
          Text(item)
        }
        .width('80%')
        .height('100vp')
        .backgroundColor('#99b2df')
        .border({
          width: 5,
          color: '#8aa7da',
          style: BorderStyle.Solid
        })
        .justifyContent(FlexAlign.Center)
      })
    }
    .justifyContent(FlexAlign.Start)
    .backgroundColor('#bdd7ee')
    .width('100%')
    .height('100%')
  }
}

渲染出来的效果:


更多关于HarmonyOS 鸿蒙Next基础(三)- 快速弄懂HarmonyOS ArkTs基础组件、布局容器的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

HarmonyOS ArkTS是鸿蒙Next中的一种声明式UI开发语言,基于TypeScript,用于构建高效、灵活的应用程序界面。ArkTS基础组件和布局容器是构建UI的核心部分。

  1. 基础组件

    • Text:用于显示文本内容,支持设置字体、颜色、对齐方式等属性。
    • Button:用于创建按钮,支持设置点击事件、样式等。
    • Image:用于显示图片,支持设置图片源、缩放模式等。
    • Input:用于接收用户输入,支持设置输入类型、提示文本等。
    • Slider:用于创建滑动条,支持设置最小值、最大值、当前值等。
    • Switch:用于创建开关控件,支持设置开关状态、点击事件等。
  2. 布局容器

    • Column:垂直布局容器,子组件按垂直方向排列。
    • Row:水平布局容器,子组件按水平方向排列。
    • Stack:层叠布局容器,子组件按层叠方式排列,后添加的组件在上层。
    • Flex:弹性布局容器,支持设置子组件的排列方式、对齐方式等。
    • Grid:网格布局容器,支持设置行数、列数、子组件的位置等。
  3. 属性绑定

    • ArkTS支持数据绑定,可以通过@State@Prop@Link等装饰器实现组件属性与数据的动态绑定。
  4. 事件处理

    • ArkTS支持事件绑定,可以通过@Watch@OnClick等装饰器实现事件处理逻辑。
  5. 样式管理

    • ArkTS支持通过@Styles装饰器定义样式,实现样式的复用和管理。

ArkTS基础组件和布局容器提供了丰富的UI构建能力,开发者可以通过组合这些组件和容器,快速构建出符合需求的用户界面。

更多关于HarmonyOS 鸿蒙Next基础(三)- 快速弄懂HarmonyOS ArkTs基础组件、布局容器的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


HarmonyOS ArkTS 是鸿蒙系统的应用开发语言,基于 TypeScript 扩展。基础组件包括 TextButtonImage 等,用于构建用户界面。布局容器如 ColumnRowStack 等,用于控制组件的排列方式。Column 垂直排列,Row 水平排列,Stack 层叠排列。通过这些组件和容器,开发者可以快速构建灵活的 UI 布局,提升开发效率。

回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!