HarmonyOS | UI开发 (一) | 基础组件(Text/Span,TextInput/TextArea,Button,Image)

本文主要是介绍HarmonyOS | UI开发 (一) | 基础组件(Text/Span,TextInput/TextArea,Button,Image),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 前言
  • 一、基础组件
    • 1.1.Text的概述
    • 1.2.Text的创建方式
      • - string字符串创建
      • - 引用Resource资源
    • 1.3.Text自定义文本样式
      • - 通过textAlign属性设置文本对齐样式
      • - 通过textOverflow属性控制文本超长处理
      • - 通过lineHeight属性设置文本行高
      • - 通过copyOption属性设置文本是否可复制粘贴
    • 1.4.Text添加事件
    • 2.1.Span的概述
    • 2.2.创建Span
      • - Span设置文本装饰线及颜色
      • - Span通过textCase设置文字一直保持大写或者小写状态
    • 2.3.Span添加事件
    • 3.1.TextInput的概述
    • 3.2.TextInput的创建
      • - 设置输入框类型
      • - 自定义样式
    • 3.3.添加事件
    • 4.1.TextArea的概述
    • 4.2.TextArea的创建
      • - 多行输入框文字超出一行时会自动折行
    • 5.1.Button的概述
    • 5.2.Button的创建
      • - 设置按钮类型
    • 5.3.添加事件
    • 6.1.Image的概述
    • 6.2.Image的获取图片的三种方式
  • 二、总结


个人博客主页 : 谭祖爱 & 技术博客

项目实例地址 : RecordHarmonyOSProject


前言

鸿蒙操作系统作为华为推出的全新分布式操作系统,为开发者提供了丰富的组件库,使得开发者能够快速构建功能强大、界面美观的应用程序。本文将深入探讨鸿蒙应用开发中常用的组件,帮助开发者更好地理解和应用这些组件,提升开发效率和用户体验。


一、基础组件

基础组件:Text/Span,TextInput/TextArea,Button,Image


1.1.Text的概述

Text是文本组件,通常用于展示用户的视图,如显示文章的文字

1.2.Text的创建方式

Text创建方式:1.string字符串,2.引用Resource资源

- string字符串创建

Text('我是一段文本')

- 引用Resource资源

通过 $r('app.string.xxx') 引用 string.json 文件中的 xxx(属性名) 对于的值

Text($r('app.string.app_name')).baselineOffset(0).fontSize(30).border({ width: 1 }).padding(10).width(300)

1.3.Text自定义文本样式

- 通过textAlign属性设置文本对齐样式

Text('左对齐').width(300).textAlign(TextAlign.Start)Text('中间对齐').width(300).textAlign(TextAlign.Center)Text('右对齐').width(300).textAlign(TextAlign.End)

- 通过textOverflow属性控制文本超长处理

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.').width(250).textOverflow({overflow:TextOverflow.None}).maxLines(1).fontSize(12).border({width:1}).padding(10)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.').width(250).textOverflow({overflow:TextOverflow.Ellipsis}).maxLines(1).fontSize(12).border({width:1}).padding(10)

- 通过lineHeight属性设置文本行高

Text('This is the text with the line height set. This is the text with the line height set.').width(300).fontSize(12).border({ width: 1 }).padding(10)
Text('This is the text with the line height set. This is the text with the line height set.').width(300).fontSize(12).border({ width: 1 }).padding(10).lineHeight(20)

- 通过copyOption属性设置文本是否可复制粘贴

Text("这是一段可复制文本").fontSize(30).copyOption(CopyOptions.InApp)

1.4.Text添加事件

Text('点我')
.onClick(()=>{console.info('我是Text的点击响应事件');})

2.1.Span的概述

Span只能作为Text组件的子组件显示文本内容。可以在一个Text内添加多个Span来显示一段信息

2.2.创建Span

Text('我是Text') {Span('我是Span')
}
.padding(10)
.borderWidth(1)

- Span设置文本装饰线及颜色

Text() {Span('我是Span1,').fontSize(16).fontColor(Color.Black).decoration({type:TextDecorationType.None})Span('我是Span1,').fontSize(16).fontColor(Color.Grey).decoration({ type: TextDecorationType.LineThrough, color: Color.Red })Span('我是Span2').fontColor(Color.Blue).fontSize(16).fontStyle(FontStyle.Italic).decoration({ type: TextDecorationType.Underline, color: Color.Black })Span(',我是Span3').fontSize(16).fontColor(Color.Grey).decoration({ type: TextDecorationType.Overline, color: Color.Green })
}
.borderWidth(1)
.padding(10)

- Span通过textCase设置文字一直保持大写或者小写状态

Text() {Span('I am Upper-span').fontSize(12).textCase(TextCase.UpperCase)
}
.borderWidth(1)
.padding(10)

2.3.Span添加事件

Text() {Span('I am Upper-span').fontSize(12).textCase(TextCase.UpperCase).onClick(()=>{console.info('我是Span——onClick')})
}

3.1.TextInput的概述

TextInput 是单行输入框组件,通常用于响应用户的输入操作

3.2.TextInput的创建

TextInput()

- 设置输入框类型

TextInput有5种可选类型,分别为Normal基本输入模式、Password密码输入模式、Email邮箱地址输入模式、Number纯数字输入模式、PhoneNumber电话号码输入模式。通过type属性进行设置:

  • 基本输入模式(默认类型)
TextInput().type(InputType.Normal)
  • 密码输入模式
TextInput().type(InputType.Password)
  • Email邮箱地址输入模式
TextInput().type(InputType.Email)
  • Number纯数字输入模式
TextInput().type(InputType.Number)
  • PhoneNumber电话号码输入模式
TextInput().type(InputType.PhoneNumber)

- 自定义样式

  • 设置无输入时的提示文本
TextInput({placeholder:'我是提示文本'})
  • 设置输入框当前的文本内容
TextInput({placeholder:'我是提示文本',text:'我是当前文本内容'})
  • 添加backgroundColor改变输入框的背景颜色
TextInput({placeholder:'我是提示文本',text:'我是当前文本内容'}).backgroundColor(Color.Pink)

3.3.添加事件

TextInput().onChange((value: string) => {console.info(value);}).onFocus(() => {console.info('获取焦点');})

4.1.TextArea的概述

TextArea 是 多行输入框

4.2.TextArea的创建

TextArea()

- 多行输入框文字超出一行时会自动折行

TextArea({text:"我是TextArea我是TextArea我是TextArea我是TextArea"}).width(300)

5.1.Button的概述

Button是按钮组件,通常用于响应用户的点击操作

5.2.Button的创建

Button通过调用接口来创建,接口调用有以下两种形式

  • 创建不包含子组件的按钮
Button('Ok', { type: ButtonType.Normal, stateEffect: true }) .borderRadius(8) .backgroundColor(0x317aff) .width(90).height(40)
  • 创建包含子组件的按钮
Button({ type: ButtonType.Normal, stateEffect: true }) {Row() {Image($r('app.media.app_icon')).width(20).height(40).margin({ left: 12 })Text('loading').fontSize(12).fontColor(0xffffff).margin({ left: 5, right: 12 })}.alignItems(VerticalAlign.Center)
}.borderRadius(8).backgroundColor(0x317aff).width(90).height(40)

- 设置按钮类型

Button有三种可选类型,分别为Capsule(胶囊类型)、Circle(圆形按钮)和Normal(普通按钮),通过type进行设置

  • 胶囊按钮(默认类型)
Button('Disable', { type: ButtonType.Capsule, stateEffect: false }).backgroundColor(0x317aff).width(90).height(40)
  • 圆形按钮
Button('Circle', { type: ButtonType.Circle, stateEffect: false }) .backgroundColor(0x317aff) .width(90) .height(90)
  • 普通按钮
Button('Ok', { type: ButtonType.Normal, stateEffect: true }) .borderRadius(8) .backgroundColor(0x317aff) .width(90).height(40)

5.3.添加事件

Button('Ok', { type: ButtonType.Normal, stateEffect: true }) .onClick(()=>{ console.info('Button onClick') })

6.1.Image的概述

Image是显示图片组件,比如:按钮中的icon、网络图片、本地图片等

6.2.Image的获取图片的三种方式

  • 本地资源
Image('images/like.png').size({width: 100,height:100})
  • 网络资源
Image('https://www.wanandroid.com/resources/image/pc/logo.png').size({width: 300,height:300})

注:获取网络图片,需要申请网络权限,在 module.json5 中配置。

  • Resource资源
Image($r('app.media.like')).size({width: 100,height:100})

二、总结

  1. Text是文本组件,用于显示文字
  2. Span只能作为Text组件的子组件显示文本内容,可以在一个Text内添加多个Span来显示一段信息
  3. TextInput 是单行输入框组件,通常用于响应用户的输入操作
  4. TextArea 是 多行输入框
  5. Button是按钮组件,通常用于响应用户的点击操作
  6. Image是显示图片组件

这篇关于HarmonyOS | UI开发 (一) | 基础组件(Text/Span,TextInput/TextArea,Button,Image)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/781345

相关文章

Vue项目的甘特图组件之dhtmlx-gantt使用教程和实现效果展示(推荐)

《Vue项目的甘特图组件之dhtmlx-gantt使用教程和实现效果展示(推荐)》文章介绍了如何使用dhtmlx-gantt组件来实现公司的甘特图需求,并提供了一个简单的Vue组件示例,文章还分享了一... 目录一、首先 npm 安装插件二、创建一个vue组件三、业务页面内 引用自定义组件:四、dhtmlx

Vue ElementUI中Upload组件批量上传的实现代码

《VueElementUI中Upload组件批量上传的实现代码》ElementUI中Upload组件批量上传通过获取upload组件的DOM、文件、上传地址和数据,封装uploadFiles方法,使... ElementUI中Upload组件如何批量上传首先就是upload组件 <el-upl

Android开发中gradle下载缓慢的问题级解决方法

《Android开发中gradle下载缓慢的问题级解决方法》本文介绍了解决Android开发中Gradle下载缓慢问题的几种方法,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录一、网络环境优化二、Gradle版本与配置优化三、其他优化措施针对android开发中Gradle下载缓慢的问

使用Go语言开发一个命令行文件管理工具

《使用Go语言开发一个命令行文件管理工具》这篇文章主要为大家详细介绍了如何使用Go语言开发一款命令行文件管理工具,支持批量重命名,删除,创建,移动文件,需要的小伙伴可以了解下... 目录一、工具功能一览二、核心代码解析1. 主程序结构2. 批量重命名3. 批量删除4. 创建文件/目录5. 批量移动三、如何安

Vue3中的动态组件详解

《Vue3中的动态组件详解》本文介绍了Vue3中的动态组件,通过`component:is=动态组件名或组件对象/component`来实现根据条件动态渲染不同的组件,此外,还提到了使用`markRa... 目录vue3动态组件动态组件的基本使用第一种写法第二种写法性能优化解决方法总结Vue3动态组件动态

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应

基于Python开发PPTX压缩工具

《基于Python开发PPTX压缩工具》在日常办公中,PPT文件往往因为图片过大而导致文件体积过大,不便于传输和存储,所以本文将使用Python开发一个PPTX压缩工具,需要的可以了解下... 目录引言全部代码环境准备代码结构代码实现运行结果引言在日常办公中,PPT文件往往因为图片过大而导致文件体积过大,

使用DeepSeek API 结合VSCode提升开发效率

《使用DeepSeekAPI结合VSCode提升开发效率》:本文主要介绍DeepSeekAPI与VisualStudioCode(VSCode)结合使用,以提升软件开发效率,具有一定的参考价值... 目录引言准备工作安装必要的 VSCode 扩展配置 DeepSeek API1. 创建 API 请求文件2.

四种Flutter子页面向父组件传递数据的方法介绍

《四种Flutter子页面向父组件传递数据的方法介绍》在Flutter中,如果父组件需要调用子组件的方法,可以通过常用的四种方式实现,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录方法 1:使用 GlobalKey 和 State 调用子组件方法方法 2:通过回调函数(Callb