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是显示图片组件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/724176.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python大数据分析游戏行业中的 Apache Kafka:用例 + 架构!

python大数据分析游戏行业中的 Apache Kafka:用例 架构! 这篇博文探讨了使用 Apache Kafka 的事件流如何提供可扩展、可靠且高效的基础设施,让游戏玩家开心并让游戏公司取得成功。讨论了游戏行业中的各种用例和架构,包括在线和移…

C++初阶篇----类与对象中卷

目录 引言1. 构造函数1.1概念1.2 特性 2. 析构函数2.1 概念2.2 特性 3. 拷贝构造函数3.1 概念3.2特征 4. 赋值运算符重载4.1 运算符重载4.2 赋值运算符重载4.3 前置和后置重载 5.日期类的实现6.const成员7.取地址及const取地址操作符重载 引言 当一个类既没有成员变量又没有成…

汉诺塔问题(C语言)

一:问题 汉诺塔(Tower of Hanoi),又称河内塔,是一个源于印度古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从…

wordpress相册gallery的几种不同调用方式

常规方式调用 if ( $gallery get_post_gallery( get_the_ID() ) ) :echo $gallery; endif; 调用循环中的所有图片并可以自字义样式 if ( $gallery get_post_gallery( get_the_ID(), false ) ) :foreach ( $gallery[src] AS $src ) {echo <img src" . $src . "…

QVector和QString互相转换

我的画图项目需要读写自定义虚线样式 {...comboBox_penStyle new QComboBox;QStringList SL_penStyle;SL_penStyle << "______" << "----------" << ".........." << "-.-.-.-.-." << "-..-..-..…

【OJ】日期差值与日期累加

个人主页 &#xff1a; zxctscl 如有转载请先通知 文章目录 1. KY111 日期差值1.1 题目分析1.2 代码 2. KY258 日期累加2.1 题目分析2.2 代码 1. KY111 日期差值 1.1 题目分析 日期之间比较可能会出现给的两个年月日都不相同&#xff0c;这个就不好作差&#xff0c;每个月给的…

LeetCode每日一题 二叉树的最大深度(二叉树)

题目描述 给定一个二叉树 root &#xff0c;返回其最大深度。二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;3 示例 2&#xff1a; 输入&#xff1a;root [1,nul…

VUE:key属性的作用

在 Vue.js 中&#xff0c;key属性的主要作用是帮助 Vue 在进行 DOM 更新时&#xff0c;能够更准确地识别哪些节点可以复用。 当key值发生变化时&#xff0c;Vue 会执行以下步骤&#xff1a; 1.查找旧节点&#xff1a;Vue 会查找虚拟 DOM 中具有旧key值的节点。 2.匹配新节点…

Kubernetes编排系统:实现云原生应用的自动化部署与管理

随着云计算和容器技术的日益普及,如何高效、自动化地部署和管理应用成为了企业面临的重要挑战。Kubernetes,作为一个开源的容器编排系统,凭借其强大的功能、灵活性和可扩展性,逐渐成为了业界的宠儿。本文将首先简要介绍Kubernetes编排系统的基本概念,然后详细阐述其核心组…

前端知识点、技巧、webpack、性能优化(持续更新~)

1、 请求太多 页面加载慢 &#xff08;webpack性能优化&#xff09; 可以把 图片转换成 base64 放在src里面 减少服务器请求 但是图片会稍微大一点点 以上的方法不需要一个一个自己转化 可以在webpack 进行 性能优化 &#xff08;官网有详细描述&#xff09;

【详识C语言】自定义类型之一:结构体

本文重点 结构体 结构体类型的声明 结构的自引用 结构体变量的定义和初始化 结构体内存对齐 结构体传参 结构体实现位段&#xff08;位段的填充&可移植性&#xff09; 结构体 结构体的声明 结构的基础知识 结构是一些值的集合&#xff0c;这些值称为成员变量。结构的每个…

nohup 命令

1. nohup 是 no hang up 的缩写&#xff0c;就是不挂断的意思 如果你正在运行一个进程&#xff0c;而且你觉得在退出帐户时该进程还不会结束&#xff0c;那么可以使用nohup命令。 该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。 2. nohup和&的区别 nohup …

在 SpringBoot3 中使用 Mybatis-Plus 报错

在 SpringBoot3 中使用 Mybatis-Plus 报错 Property ‘sqlSessionFactory’ or ‘sqlSessionTemplate’ are required Caused by: java.lang.IllegalArgumentException: Property sqlSessionFactory or sqlSessionTemplate are requiredat org.springframework.util.Assert.no…

Vue中有哪些优化性能的方法?

Vue是一款流行的JavaScript框架&#xff0c;用于构建交互性强的Web应用程序。在前端开发中&#xff0c;性能优化是一个至关重要的方面&#xff0c;尤其是当应用程序规模变大时。Vue提供了许多优化性能的方法&#xff0c;可以帮助开发人员提升应用程序的性能&#xff0c;从而提升…

管理心理--程序员如何选择职业赛道

不小心看到了这个活动话题&#xff0c;本人前后带过三四百程序员&#xff0c;并成功为不少程序员指明了方向&#xff0c;不少程序员到现在还经常约我吃饭表示感谢。对这个话题应该是有比较深的感触。 一、程序员方向本身的赛道。 一开始呆的都是大厂&#xff0c;程序员一般都…

成员静态函数和回调函数的灵活应用

回调函数与类静态函数 使用typedey定义函数指针使用 std::function<void(void*)> 包装 定义函数回调函数有两种方法 使用typedey定义函数指针 #typedef int (*func)(void*);使用 std::function<void(void*)> 包装

用spark读取及存储数据

读取数据 data spark.sql("""select * from temp.tables""") data.show(3)# 转成pandas方式 # df data.toPandas() # df.head(3)存储数据 table "temp.new_tables" data.write.format("hive").mode("overwrite&qu…

Leetcode刷题(三十七)

全排列II&#xff08;Medium&#xff09; 给定一个可包含重复数字的序列 nums &#xff0c;按任意顺序 返回所有不重复的全排列。示例 1&#xff1a;输入&#xff1a;nums [1,1,2] 输出&#xff1a; [[1,1,2],[1,2,1],[2,1,1]] 示例 2&#xff1a;输入&#xff1a;nums [1,2…

鸿蒙NEXT开发实战:【网络管理-数据请求】

概述 本示例仿postman输入API接口地址&#xff0c;获取相应数据&#xff0c;介绍数据请求接口的用法。 样例展示 基础信息 Http 介绍 本示例通过[ohos.net.http]等接口&#xff0c;实现了根据URL地址和相关配置项发起http请求的功能。 效果预览 首页结果页 使用说明 1.…

【语言学习】std::transform函数

阅读llvm的这个提交时&#xff0c;发现了其中使用了一个函数std::transform&#xff08;原文对其进行了一层封装&#xff09; 如果不理解std::transform的三个参数的关系&#xff0c;就会对第三个参数的lambda表达式理解不了。其实&#xff0c;第三个参数的作用是提供给了一种…