【HarmonyOS4.0】第六篇-ArkUI系统组件(一)

这篇具有很好参考价值的文章主要介绍了【HarmonyOS4.0】第六篇-ArkUI系统组件(一)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

组件是构建页面的核心,每个组件通过对数据和方法的简单封装,实现独立的可视、可交互功能单元。组件之间相互独立,随取随用,也可以在需求相同的地方重复使用。

一、文本组件

1.1.Text定义介绍

Text 是显示文本的基础组件之一,它可以包含子组件 Span ,当包含 Span 时不生效,只显示 Span 的内容。接口如下:、

Text(content?: string | Resource)

说明:

①.string格式,直接填写文本内容

Text("图片宽度"

②.Resource格式,读取本地资源文件

Text($r('app.string.width_label'))

需要注意的使由于国际化的问题,读取本地资源文件的时候,需要分别base/element、en_US和zh_CN下的setting.json进行配置,先会根据语言在对应的zh_CN或者en_CN下读取,最后才会在base目录下加载

1.2.Text属性介绍

text除支持通用属性外,还支持以下属性参考网址 https://developer.harmonyos.com/cn/docs/documentation/doc-references-V3/ts-basic-components-text-0000001477981201-V3,下面列出部分常用的属性:

①.textAlign:设置文本的对其方式,对齐参考系是 Text 组件本身,只有 Text 组件本身的宽度大于文本内容长度, textAlign 属性才起作用, TextAlign 定义了以下 3 种类型:

  • Start(默认值):根据文字书写相同的方向对齐,比如中文从左往右排版,那么文本则靠左对齐。
  • Center:文本居中对齐。
  • End:根据文字书写相反的方向对齐,比如中文从左往右排版,那么文本则靠右对齐。

案例如下:

@Entry
@Component
struct TextPage {
  build() {
    Column({space:20}){
      //默认Start:靠左对齐
      Text("HelloWorld")
        .backgroundColor("#FFC0CB")
        .width("100%")//默认Start
        .fontSize("20fp")

      //文字居中
      Text("HelloWorld")
        .textAlign(TextAlign.Center)
        .backgroundColor("#6A5ACD")
        .width("100%")
        .fontSize("20fp")

      //文字靠右
      Text("HelloWorld")
        .textAlign(TextAlign.End)
        .backgroundColor("#3CB371")
        .width("100%")
        .fontSize("20fp")
    }
    .width("100%")
    .height("100%")
    .padding({top:20})
  }
}

执行预览效果如下:

【HarmonyOS4.0】第六篇-ArkUI系统组件(一),HarmoneyOS,前端,鸿蒙,鸿蒙系统,harmonyos,华为,鸿蒙教程

②.maxLines、textOverflow:设置文本显示的最大行数和截取方式,默认折行显示不截取,如果设置了此参数,则文本最多显示到指定的行,如果有多余的文本,可以通过 textOverflow 来指定截取方式,有两种方式:

  • Clip:超出maxLines展示行截断内容展示
  • Ellipsis:超出maxLines展示行省略号

案例如下:

@Entry
@Component
struct TextMaxLinesPage {
  build() {
    Column(){
      //不设置不会截断
      Text('This is the setting of textOverflow to Clip text content This is the setting of textOverflow to None text content. This is the setting of textOverflow to Clip text content This is the setting of textOverflow to None text content.')

      // 超出maxLines展示行截断内容展示
      Text('This is the setting of textOverflow to Clip text content This is the setting of textOverflow to None text content. This is the setting of textOverflow to Clip text content This is the setting of textOverflow to None text content.')
        .maxLines(1)
        .textOverflow({overflow: TextOverflow.Clip})
        .fontSize("20fp")
        .backgroundColor(Color.Pink)

      // 超出maxLines展示行省略号
      Text('This is the setting of textOverflow to Clip text content This is the setting of textOverflow to None text content. This is the setting of textOverflow to Clip text content This is the setting of textOverflow to None text content.')
        .maxLines(1)
        .textOverflow({overflow: TextOverflow.Ellipsis})
        .fontSize("20fp")
        .backgroundColor(Color.Green)
    }
    .width("100%")
    .height("100%")
    .padding({top:20})
  }
}

执行后如下:

【HarmonyOS4.0】第六篇-ArkUI系统组件(一),HarmoneyOS,前端,鸿蒙,鸿蒙系统,harmonyos,华为,鸿蒙教程

③.fontSize、fontColor、fontStyle、 fontWeight:分别表示设置文字的大小,颜色,样式以及粗细,我们可以组合起来设置文本的富样式,先看一个样例:

Text('Hello, OpenHarmony')
        .fontSize("20fp")              //字体大小
        .fontColor('#ff0000')          //字体颜色
        .fontWeight(FontWeight.Bold)   //Bold加粗
        .fontStyle(FontStyle.Italic)   //字体样式:Italic style是斜体风格
        .decoration({type: TextDecorationType.LineThrough, color: Color.Black}) //decoration 表示给文本添加装饰线,Underline是下划线,LineThrough表示中划线

执行后如下:

【HarmonyOS4.0】第六篇-ArkUI系统组件(一),HarmoneyOS,前端,鸿蒙,鸿蒙系统,harmonyos,华为,鸿蒙教程

1.3.案例练习

在屏幕输入图片宽度,让图片随着输入的宽度进行改变,代码如下:

@Entry
@Component
struct TextPage {
  //定义变量,控制图片的宽度
  @State imageWidth:number = 20;

  build() {
    Column({space:20}){
      //加载图片
      Image($r('app.media.icon'))
        .width(this.imageWidth)
        //图像插值,High高使用率,Medium:中度使用,Low低使用率
        .interpolation(ImageInterpolation.High)

      //加载文字
      Text($r('app.string.width_new_label'))
        .fontSize("30fp")
        .fontWeight(FontWeight.Bold)

      //让图片的大小随着text的值改变大小
      TextInput({'text': '100'})
        .width(150)
        .backgroundColor("#32CD32")
        .type(InputType.Number)
        .onChange((value:string)=>{
          this.imageWidth = parseInt(value)
        })
    }
    .width("100%")
    .padding(20)
  }
}

注意:

图像插值是指在图像处理中使用已知像素值来估计未知像素值的过程。高质量的插值通常意味着使用更复杂的算法来估计像素值,以获得更平滑、更真实的图像结果。这种设置通常会增加计算成本,但可以提高图像的视觉质量。

上面的图片由于放大,会出现锯齿状,采用图像插值就可以解决这个问题

执行后如下:

【HarmonyOS4.0】第六篇-ArkUI系统组件(一),HarmoneyOS,前端,鸿蒙,鸿蒙系统,harmonyos,华为,鸿蒙教程

二、按钮组件

Button 组件也是基础组件之一,和其它基础组件不同的是 Button 组件允许添加一个子组件来实现不同的展示样式。

2.1.Button定义

接口如下:

Button(label?: ResourceStr, options?: { type?: ButtonType, stateEffect?: boolean })

说明:

①.文字型按钮

Button('登录'

②.自定义按钮,在Button内嵌套其它组件

Button(){
        Image($r('app.media.search')).width(20).margin(10)
}

2.2.添加属性和事件

Button("登录")
        .width(100)
        .height(30)
        .type(ButtonType.Normal) //按钮类型
        .onClick(()=>{
          //点击事件
        })

type:设置 Button 按钮的显示样式, ButtonType 定义了以下3种样式:

①.Capsule(默认值):胶囊类型,圆角值默认为 Button 高度的一半,并且不允许修改,此时通过设置 borderRadius() 的方式设置圆角则无效。案例如下:

@Entry
@Component
struct ButtoPage {
  build() {
    Column(){
      Button("test").height(30).width(100).backgroundColor("#C71585")

      //默认值Capsule
      Button("test")
        .height(30)
        .width(100)
        .backgroundColor("#C71585") //背景色
        .borderRadius(20)           //设置圆角,但是没有效果
        .borderWidth(3)             //设置边框宽度
        .borderColor(Color.Yellow)  //设置边框颜色
    }
    .width("100%")
    .height("100%")
    .padding(20)
  }
}

执行后如下:

【HarmonyOS4.0】第六篇-ArkUI系统组件(一),HarmoneyOS,前端,鸿蒙,鸿蒙系统,harmonyos,华为,鸿蒙教程

②.Normal:矩形按钮,无圆角,可以通过 borderRadius() 设置圆角大小,不支持通过 border() 的方式设置圆角

@Entry
@Component
struct ButtonPage02 {
  build() {
    Column(){
      //默认胶囊类型
      Button("HelloWorld")
        .height(40)
        .width(120)
        .backgroundColor("#C71585")


      Button("HelloWorld")
        .height(40)
        .width(120)
        .backgroundColor("#C71585")
        .type(ButtonType.Normal) //按钮为矩形
        .margin({top:30})

    }
    .width("100%")
    .height("100%")
    .padding(20)
  }
}

执行后如下:

【HarmonyOS4.0】第六篇-ArkUI系统组件(一),HarmoneyOS,前端,鸿蒙,鸿蒙系统,harmonyos,华为,鸿蒙教程

③.Circle:圆形按钮,当按钮类型为Circle时,borderRadius即为按钮半径,若未设置borderRadius按钮半径则为宽、高中较小值的一半

@Entry
@Component
struct ButtonPage02 {
  build() {
    Column(){
      //默认胶囊类型
      Button("HelloWorld")
        .height(40)
        .width(120)
        .backgroundColor("#C71585")


      Button("HelloWorld")
        .height(40)
        .width(120)
        .backgroundColor("#C71585")
        .type(ButtonType.Normal) //按钮为矩形
        .margin({top:30})

      //按钮设置为圆角,borderRadius(20)设置元素的边框圆角半径,不支持百分比。
      Button("Hi")
        .backgroundColor("#C71585")
        .type(ButtonType.Circle)
        .margin({top:30})
        .borderRadius(20)

      //若未设置borderRadius按钮半径则为宽、高中较小值的一半
      Button("Hi")
        .height(60)
        .width(120)
        .backgroundColor("#C71585")
        .type(ButtonType.Circle) //按钮设置为圆角,没有设置宽和高,则不会显示
        .margin({top:30})

    }
    .width("100%")
    .padding(20)
  }
}

执行后如下:

【HarmonyOS4.0】第六篇-ArkUI系统组件(一),HarmoneyOS,前端,鸿蒙,鸿蒙系统,harmonyos,华为,鸿蒙教程

2.3.Button自定义样式

①.包含 Text 组件

案例如下:

@Entry
@Component
struct ButtonPage02 {
  build() {
    Column(){
      
      //设置圆角矩形按钮,文字通过Text实现
      Button(){
        Text("HelloWorld").fontSize(20).fontColor("#FFFFF0")
      }
      .height(40)
      .width(120)
      .backgroundColor("#C71585")
      .type(ButtonType.Normal) //设置为圆角矩形
      .borderRadius(8) //设置圆角半径

      //设置圆形按钮,文字通过Text实现
      Button(){
        Text("Hi").fontSize(20).fontColor("#FFFFF0")
      }
      .height(40)
      .width(120)
      .backgroundColor("#C71585")
      .margin(20)
      .type(ButtonType.Circle) //设置为圆角矩形
      .borderRadius(8) //设置圆角半径
    }
    .width("100%")
    .padding(20)
  }
}

预览如下:

【HarmonyOS4.0】第六篇-ArkUI系统组件(一),HarmoneyOS,前端,鸿蒙,鸿蒙系统,harmonyos,华为,鸿蒙教程

上面给 Button 添加了一个 Text 子组件,通过设置 Text 的文本样式达到修改 Button 文字的效果。

②.包含Image组件

@Entry
@Component
struct ButtonPage02 {
  build() {
    Column(){

      //设置圆形按钮,加载图片按钮
      Button(){
        Image($r('app.media.more'))
          .width(30)
          .height(30)
      }
      .height(40)
      .width(120)
      .backgroundColor("#D3D3D3")
      .margin(20)
      .type(ButtonType.Circle) //设置为圆角矩形
      .borderRadius(8) //设置圆角半径

      //设置圆形按钮,加载图片按钮
      Button(){
        Image($r('app.media.remove'))
          .width(30)
          .height(30)
      }
      .height(40)
      .width(120)
      .backgroundColor("#D3D3D3")
      .margin(20)
      .type(ButtonType.Circle) //设置为圆角矩形
      .borderRadius(8) //设置圆角半径

    }
    .width("100%")
    .padding(20)
  }
}

预览结果如下:

【HarmonyOS4.0】第六篇-ArkUI系统组件(一),HarmoneyOS,前端,鸿蒙,鸿蒙系统,harmonyos,华为,鸿蒙教程

上面使用了 Image 组件,后续会详细讲解

③.包含复杂组件

@Entry
@Component
struct ButtonPage02 {
  build() {
    Column(){

      //设置圆形按钮,加载图片按钮
      Button(){
        Image($r('app.media.more'))
          .width(30)
          .height(30)
      }
      .height(40)
      .width(120)
      .backgroundColor("#D3D3D3")
      .margin(20)
      .type(ButtonType.Circle) //设置为圆角矩形
      .borderRadius(8) //设置圆角半径

      //设置圆形按钮,加载图片按钮
      Button(){
        Image($r('app.media.remove'))
          .width(30)
          .height(30)
      }
      .height(40)
      .width(120)
      .backgroundColor("#D3D3D3")
      .margin(20)
      .type(ButtonType.Circle) //设置为圆角矩形
      .borderRadius(8) //设置圆角半径

      //设置圆形按钮,加载图片按钮和文字按钮
      Button(){
        Row(){
          Image($r('app.media.loading'))
            .width(30)
            .height(30)
          Text("loading")
            .fontSize(20)
            .fontColor("#ffffff")
            .margin({left:12})
        }
      }
      .height(40)
      .width(140)
      .backgroundColor("#0099FF")
      .margin(20)
      .type(ButtonType.Normal) //设置为圆角矩形
      .borderRadius(8)

    }
    .width("100%")
    .padding(20)
  }
}

预览结果如下图所示:

【HarmonyOS4.0】第六篇-ArkUI系统组件(一),HarmoneyOS,前端,鸿蒙,鸿蒙系统,harmonyos,华为,鸿蒙教程

上面使用 Row 作为子组件, Row 组件属于线性容器组件,可以添加多个子组件,后续章节详细会讲解。

三、图片组件

Image 用来加载并显示图片的基础组件,它支持从内存、本地和网络加载图片,支持png、jpg、bmp、svg和gif类型的图片格式。当从网络加载图片的时候,需要申请网络访问权限。

3.1.Image定义

接口如下:

Image(src: string | PixelMap | Resource)

说明如下:

①string格式,通常用来加载网络图片,需要申请网络访问权限:ohos.permission.INTERNET

Image("https://xxx.png')

②Pixel Map格式,可以加载像素图,常用在图片编辑中

Image(pixel Map Object)

③Resource格式,加载本地图片,推荐使用

Image($r('app.media.mate60'))
Image($rawfile('mate60.png'))

3.2.Image属性

1)alt:设置占位图,图片显示之前先显示占位图,比如在加载网络图片或者图片加载失败时的场景。

2)objectFit:设置图片的放缩类型,当 Image 组件大小和图片大小不同时指定图片的放缩类型, ImageFit 提供了以下5种匹配模式:

  • Cover(默认值):保持图片宽高比进行放缩显示,使得图片完全显示在显示边界外。
  • Contain:保持图片宽高比进行放缩显示,使得图片完全显示在显示边界内。
  • Fill:不保持图片宽高比显示,是图片完全充满显示边界。
  • None:保持图片原有尺寸显示,通常配合 objectRepeat 属性一起使用。
  • ScaleDown:保持图片宽高比显示,使图片缩小或者保持不变的显示出来。

3)renderMode:设置图片的渲染模式, ImageRenderMode 定义了以下2种渲染模式:

  • Original(默认值):按照原图进行渲染。
  • Template:将图像渲染为模板图像,忽略图片的颜色信息。
@Entry
@Component
struct ImagePage {
  build() {
    Column(){
      Image($r("app.media.Sns"))
        .width(200)
        .height(90)
        .renderMode(ImageRenderMode.Original) // 原图渲染

      Image($r("app.media.Sns"))
        .width(200)
        .height(90)
        .renderMode(ImageRenderMode.Template) // 模板渲染
    }
    .width("100%")
    .height("100%")
    .padding(20)
  }
}

执行如下:

【HarmonyOS4.0】第六篇-ArkUI系统组件(一),HarmoneyOS,前端,鸿蒙,鸿蒙系统,harmonyos,华为,鸿蒙教程

4)sourceSize:设置图片解码尺寸,降低图片的分辨率,常用于需要让图片显示尺寸比组件尺寸更小的场景。和ImageFit.None配合使用时可在组件内显示小图。单位:px

@Entry
@Component
struct ImagePage {
  build() {
    Column(){
      Image($r("app.media.Snip"))
        .width(200)
        .height(90)

      Image($r("app.media.Snip"))
        .width(200)
        .height(90)
        .margin({top:20})
        .sourceSize({width:10,height:10}) //设置解码的宽度
    }
    .width("100%")
    .height("100%")
    .padding(20)
  }
}

预览效果如下:

【HarmonyOS4.0】第六篇-ArkUI系统组件(一),HarmoneyOS,前端,鸿蒙,鸿蒙系统,harmonyos,华为,鸿蒙教程

3.3.Image加载方式

1)从本地加载
  • 拷贝 Snip.png 图片到工程的 resources/main/base/media 目录下
  • 加载图片,直接使用系统提供的资源访问符 $() 或者本地文件加载
  • 加载图片,从本地的rawfile中加载图片通过$rawfile(“scenery.png”)方式加载

案例如下:

@Entry
@Component
struct ImagePage03 {
  @State message:string = '点我呀';
  build() {
    Column(){
      Text(this.message)
        .fontSize(50)
        .fontWeight(FontWeight.Bold)
        .fontColor("#36D")
        .onClick(()=>{
          this.message = "HelloWorld!" //点击替换文字
        })

      //加载本地media下的图片
      Image($r('app.media.icon'))
        .width(200)
        .height(200)
        .margin({top:20})
        .interpolation(ImageInterpolation.High) //设置图片的插值效果,即减轻低清晰度图片在放大显示的时候出现的锯齿问题,仅针对图片放大插值。

      //从本地的rawfile中加载图片
      Image($rawfile("scenery.png"))
        .width(300)
        .height(200)
        .margin({top:20})
    }
    .width("100%")
    .height("100%")
    .padding(20)
    .alignItems(HorizontalAlign.Center)
  }
}

ImageInterpolation:图片插值:从API version 9开始,该接口支持在ArkTS卡片中使用。

名称 描述
None 不使用图片插值。
High 高图片插值,插值质量最高,可能会影响图片渲染的速度。
Medium 中图片插值。
Low 低图片插值。

执行后如下:

【HarmonyOS4.0】第六篇-ArkUI系统组件(一),HarmoneyOS,前端,鸿蒙,鸿蒙系统,harmonyos,华为,鸿蒙教程

2)从网络加载
  • 限制与约束说明:

当加载网络图片时需要申请 ohos.permission.INTERNET 权限。具体申请方式请参考权限申请声明。

应用需要在工程配置文件中,对需要的权限逐个声明,未在配置文件中声明的权限,应用将无法获得授权。HarmonyOS提供了两种应用模型,分别为FA模型和Stage模型,更多信息可以参考应用模型解读。不同的应用模型的应用包结构不同,所使用的配置文件不同。

配置文件标签说明如下表所示。

标签 是否必填 说明
name 权限名称。
reason 描述申请权限的原因。> 说明:当申请的权限为user_grant权限时,此字段必填。
usedScene 描述权限使用的场景和时机。> 说明:当申请的权限为user_grant权限时,此字段必填。
abilities 标识需要使用到该权限的Ability,标签为数组形式。适用模型:Stage模型
ability 标识需要使用到该权限的Ability,标签为数组形式。适用模型:FA模型
when 标识权限使用的时机,值为inuse/always。- inuse:表示为仅允许前台使用。- always:表示前后台都可使用。

Stage模型

使用Stage模型的应用,需要在module.json5配置文件中声明权限。添加这一段即可

"requestPermissions": [
      {"name":  "ohos.permission.INTERNET"}
    ],

如下图所示

【HarmonyOS4.0】第六篇-ArkUI系统组件(一),HarmoneyOS,前端,鸿蒙,鸿蒙系统,harmonyos,华为,鸿蒙教程

  • 案例演示
@Entry
@Component
struct ImagePage04 {
  @State message:string = '点我呀';

  build() {
    Column(){
      //加载网络图片
      Image('https://imgservice.suning.cn/uimg1/b2c/image/XyeIzII8UlaDgw0xp0YIpA.png_800w_800h_4e')
    }
    .width("100%")
    .height("100%")
    .padding(20)
  }
}

执行后如下:

【HarmonyOS4.0】第六篇-ArkUI系统组件(一),HarmoneyOS,前端,鸿蒙,鸿蒙系统,harmonyos,华为,鸿蒙教程

3)从内存加载
Image(pixel Map object)

四、输入框组件

ArkUI开发框架提供了 2 种类型的输入框:

  • TextInput:只支持单行输入
  • TextArea:支持多行输入

下面我们分别做下介绍

4.1.TextInput定义

接口如下:

TextInput(value?:{placeholder?: ResourceStr, text?: ResourceStr, controller?: TextInputController})

value:输入框的提示样式设置, TextInputOptions 参数类型说明如下:

  • text:设置输入框的初始显示文本,不设置时显示 placeholder 的内容。
  • placeholder:占位提示文本,当不设置 text 时,则会显示该文本。
  • controller:光标控制器,设置光标的下标位置。

案例如下:

@Entry
@Component
struct TextInputPage01 {
  build() {
    Column(){
      TextInput({
        placeholder: "hi, Augus"
      }).margin({top:20})
        .width(200)

      TextInput({
        placeholder: "Augus",
        text: "请输入用户名"
      }).margin({top:20})
        .width(200)

    }.width("100%")
  }
}

执行后效果如下:

【HarmonyOS4.0】第六篇-ArkUI系统组件(一),HarmoneyOS,前端,鸿蒙,鸿蒙系统,harmonyos,华为,鸿蒙教程

4.2.TextInput属性介绍

TextInput 组件用于文本输入,它只能单行文本输入,若文本超出自身长度则使用 ... 在末尾替代。 TextInput 组件除了公共属性外,它还提供了很多常用的属性:

  • type:表示输入框的类型,比如设置为 Number ,则表示输入框只能输入数字, password表示输入的密码,会使用遮挡符遮挡。
  • enterKeyType:表示设置输入法回车键类型,主要用来控制回车键的显示样式。例如设置 enterKeyTypeSearchtypeNumber 时,结果如下图所示:

【HarmonyOS4.0】第六篇-ArkUI系统组件(一),HarmoneyOS,前端,鸿蒙,鸿蒙系统,harmonyos,华为,鸿蒙教程

  • maxLength:设置输入框允许输入多少字符。
  • caretColor:设置光标的颜色。

案例如下:

@Entry
@Component
struct TextInputPage01 {
  build() {
    Column(){

      TextInput({
        text: "请输入年龄"
      })
        .margin({top:20})
        .width(200)
        .type(InputType.Number)                //设置类型
        .caretColor(Color.Red)                 //设置光标颜色
        //.enterKeyType(EnterKeyType.Search)     //例如 这个是搜索框

    }.width("100%")
  }
}

结果如下:

【HarmonyOS4.0】第六篇-ArkUI系统组件(一),HarmoneyOS,前端,鸿蒙,鸿蒙系统,harmonyos,华为,鸿蒙教程

4.3.TextInput事件介绍

TextInput 除了具有公共事件外,它还提供了自己独有的事件回调。

  • onChange:当输入框的内容变化时,触发该回调并把输入框的值回调出来
  • onSubmit:回车键或者软键盘回车键触发该回调,参数为当前软键盘回车键类型。
  • onEditChanged:输入状态变化时,触发回调。

TextInput 的一个案例如下:

@Entry
@Component
struct TextInputPage02 {
  @State value:string = "";

  build() {
    Column(){
      TextInput({placeholder: "请输入密码"})
        .width("100%")                     //设置输入框宽度为100%
        .height(45)                        //设置输入框高度为45
        .type(InputType.Password)          //设置输入框类型为密码输入
        .enterKeyType(EnterKeyType.Done)   //设置按下回车键的行为,表示完成输入
        .caretColor(Color.Red)             //设置光标颜色为红色
        .placeholderColor(Color.Orange)     //设置占位符文本颜色为绿色
        .placeholderFont({
          size:20,                         // 字体大小为20
          style:FontStyle.Italic,          // 字体样式为斜体
          weight:FontWeight.Bold           // 字体粗细为粗体
        })
        .onChange((value)=>{
          this.value = value;
        })

      Text("输入内容为:"+this.value)
        .fontSize(20)
        .width("100%")
        .margin({top:20})
    }
    .width("100%")
    .height("100%")
    .padding(20)
    .alignItems(HorizontalAlign.Center) //表示将子元素在水平方向上的对齐方式设置为居中对齐。这意味着子元素将在其父容器的水平中心位置进行对齐。
  }
}

预览效果如下:

【HarmonyOS4.0】第六篇-ArkUI系统组件(一),HarmoneyOS,前端,鸿蒙,鸿蒙系统,harmonyos,华为,鸿蒙教程

4.4.TextArea简单介绍

TextAreaTextInput 都属于输入框,只是 TextArea 允许多行输入,它们的属性也都大致是一样的,只是目前 TextArea 还不支持 maxLength 属性,这里就不再介绍 TextArea 的属性了

案例说明 TextInputTextArea 的使用,如下所示:

@Entry
@Component
struct TextInputPage02 {
  @State value:string = "";

  build() {
    Column(){
      Row(){
        Text("联系方式:").fontSize(20)

        TextInput({placeholder:"QQ或者邮箱"})
          .layoutWeight(1)
          .height(45)
          .type(InputType.Normal)
          .fontColor(Color.Blue)
          .enterKeyType(EnterKeyType.Next)
          .caretColor(Color.Black)
          .placeholderFont({
            size: 18,
            style: FontStyle.Italic,
            weight: FontWeight.Bold
          })
      }
      .width("100%")
      .height(60)

      Row(){

        Text("反馈意见:").fontSize(20)

        Stack({alignContent:Alignment.BottomEnd}){
          TextArea({placeholder:"请输入反馈意见内容"})
            .width("100%")
            .height(500)
            .fontColor(Color.Green)
            .fontStyle(FontStyle.Italic)
            .caretColor(Color.Red)
            .placeholderColor(Color.Black)
            .placeholderFont({
              size: 18,
              style: FontStyle.Italic,
              weight: FontWeight.Bold
            })
            .onChange((value) => {
              this.value = value;
            })

          Text(this.value.length + "/1000")
            .fontSize(15)
            .margin(10)
        }
        .layoutWeight(1)
        .width("100%")
        .height(300)
      }
    }
    .width("100%")
    .height("100%")
    .padding(20)
    .alignItems(HorizontalAlign.Center) //表示将子元素在水平方向上的对齐方式设置为居中对齐。这意味着子元素将在其父容器的水平中心位置进行对齐。
  }
}

运行结果如下图所示:

@Entry  // 标记为入口组件
@Component  // 声明为组件
struct TextInputPage02 {
  @State value:string = "";  // 声明一个状态变量 value,初始值为空字符串

  build() {  // 组件的构建方法
    Column(){  // 创建一个垂直布局的列
      Row(){  // 在列中创建一行
        Text("联系方式:").fontSize(20)  // 显示文本“联系方式:”,设置字体大小为20

        TextInput({placeholder:"QQ或者邮箱"})  // 创建一个文本输入框,设置占位符为"QQ或者邮箱"
          .layoutWeight(1)  // 设置布局权重为1,占据剩余空间
          .height(45)  // 设置输入框高度为45
          .type(InputType.Normal)  // 设置输入框类型为普通文本输入
          .fontColor(Color.Blue)  // 设置文本颜色为蓝色
          .enterKeyType(EnterKeyType.Next)  // 设置按下回车键的行为为切换到下一个输入框
          .caretColor(Color.Black)  // 设置光标颜色为黑色
          .placeholderFont({  // 设置占位符文本字体样式
            size: 18,  // 字体大小为18
            style: FontStyle.Italic,  // 字体样式为斜体
            weight: FontWeight.Bold  // 字体粗细为粗体
          })
      }
      .width("100%")  // 设置行的宽度为100%
      .height(60)  // 设置行的高度为60

      Row(){  // 在列中创建另一行

        Text("反馈意见:").fontSize(20)  // 显示文本“反馈意见:”,设置字体大小为20

        Stack({alignContent:Alignment.BottomEnd}){  // 创建一个堆叠布局,并设置子元素在底部右侧对齐
          TextArea({placeholder:"请输入反馈意见内容"})  // 创建一个文本域,设置占位符为"请输入反馈意见内容"
            .width("100%")  // 设置文本域宽度为100%
            .height(500)  // 设置文本域高度为500
            .fontColor(Color.Green)  // 设置文本颜色为绿色
            .fontStyle(FontStyle.Italic)  // 设置字体样式为斜体
            .caretColor(Color.Red)  // 设置光标颜色为红色
            .placeholderColor(Color.Black)  // 设置占位符文本颜色为黑色
            .placeholderFont({  // 设置占位符文本字体样式
              size: 18,  // 字体大小为18
              style: FontStyle.Italic,  // 字体样式为斜体
              weight: FontWeight.Bold  // 字体粗细为粗体
            })
            .onChange((value) => {  // 监听文本域内容变化事件
              this.value = value;  // 将文本域的值赋给状态变量 value
            })

          Text(this.value.length + "/1000")  // 显示当前文本域内容长度和最大长度的提示
            .fontSize(15)  // 设置字体大小为15
            .margin(10)  // 设置外边距为10
        }
        .layoutWeight(1)  // 设置布局权重为1,占据剩余空间
        .width("100%")  // 设置堆叠布局宽度为100%
        .height(300)  // 设置堆叠布局高度为300
      }
    }
    .width("100%")  // 设置列宽度为100%
    .height("100%")  // 设置列高度为100%
    .padding(20)  // 设置内边距为20
    .alignItems(HorizontalAlign.Center)  // 设置子元素在水平方向上的对齐方式为居中对齐
  }
}

预览效果如下:

【HarmonyOS4.0】第六篇-ArkUI系统组件(一),HarmoneyOS,前端,鸿蒙,鸿蒙系统,harmonyos,华为,鸿蒙教程文章来源地址https://www.toymoban.com/news/detail-824171.html

到了这里,关于【HarmonyOS4.0】第六篇-ArkUI系统组件(一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • HarmonyOS4.0系统性深入开发21PageAbility组件概述

    PageAbility是包含UI界面、提供展示UI能力的应用组件,主要用于与用户交互。 开发者通过DevEco Studio开发平台创建PageAbility时,DevEco Studio会自动创建相关模板代码。PageAbility相关能力通过单独的featureAbility实现,生命周期相关回调则通过app.js/app.ets中各个回调函数实现。 PageAbili

    2024年01月19日
    浏览(54)
  • HarmonyOS4.0系列——08、整合UI常用组件

    Blank 组件在横竖屏占满空余空间效果 Blank 的父组件需要设置宽度,否则不生效 ButtonType 枚举说明 名称 描述 Capsule 胶囊型按钮(圆角默认为高度的一半)。 Circle 圆形按钮。 Normal 普通按钮(默认不带圆角)。 设置颜色渐变需先设置backgroundColor为透明色。 属性 type: 按钮类型,

    2024年02月20日
    浏览(50)
  • 鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之NavDestination组件

     鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之NavDestination组件 一、操作环境 操作系统:  Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1+ 二、NavDestination组件 作为NavRouter组件的子组件,用于显示导航内容区。 子组件 可以包含子组件。 接口 NavDestination() 属性 仅支持backgroundColo

    2024年02月20日
    浏览(44)
  • 鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之NavRouter组件

    鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之NavRouter组件 一、操作环境 操作系统:  Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1+ 二、NavRouter组件 导航组件,默认提供点击响应处理,不需要开发者自定义点击事件逻辑。 子组件 必须包含两个子组件,其中第二个子组件必须为

    2024年02月21日
    浏览(42)
  • 鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Blank组件

    鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Blank组件 一、操作环境 操作系统:  Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1+ 二、Blank组件 空白填充组件,在容器主轴方向上,空白填充组件具有自动填充容器空余部分的能力。仅当父组件为Row/Column/Flex时生效。 子组件 无 接口

    2024年02月19日
    浏览(53)
  • HarmonyOS4.0从零开始的开发教程10管理组件状态

    在应用中,界面通常都是动态的。如图1所示,在子目标列表中,当用户点击目标一,目标一会呈现展开状态,再次点击目标一,目标一呈现收起状态。界面会根据不同的状态展示不一样的效果。 图1 展开/收起目标项 ArkUI作为一种声明式UI,具有状态驱动UI更新的特点。当用户

    2024年02月04日
    浏览(43)
  • 鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之TextInput输入框组件

    鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之TextInput输入框组件 一、操作环境 操作系统:  Windows 10 专业版 IDE:DevEco Studio 3.1 SDK:HarmonyOS 3.1 二、TextInput TextInput(value?:{placeholder?: ResourceStr, text?: ResourceStr, controller?: TextInputController}) 参数: 参数名 参数类型 必填 参数描述 placeholder Resou

    2024年02月04日
    浏览(45)
  • HarmonyOS4.0从零开始的开发教程11Video组件的使用

    在手机、平板或是智慧屏这些终端设备上,媒体功能可以算作是我们最常用的场景之一。无论是实现音频的播放、录制、采集,还是视频的播放、切换、循环,亦或是相机的预览、拍照等功能,媒体组件都是必不可少的。以视频功能为例,在应用开发过程中,我们需要通过

    2024年02月04日
    浏览(53)
  • HarmonyOS4.0系列——07、自定义组件的生命周期、路由以及路由传参

    允许在生命周期函数中使用 Promise 和异步回调函数,比如网络资源获取,定时器设置等; 即被@Entry 装饰的组件生命周期,提供以下生命周期接口: onPageShow 页面加载时触发,页面每次显示时触发一次,包括路由过程、应用进入前台等场景。 onPageHide 从第一个页面跳转第二个

    2024年01月21日
    浏览(42)
  • 【华为鸿蒙系统学习】- HarmonyOS4.0开发|自学篇

    ​ 🌈个人主页: Aileen_0v0 🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 💫个人格言: \\\"没有罗马,那就自己创造罗马~\\\" 目录 HarmonyOS 4.0 技术介绍: HarmonyOS三大特征:     1.实现硬件互助,资源共享。      2. 面向开发者,实现一次开发,多端部署。  3.一套操

    2024年02月05日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包