ArKTS的基本组件
组件的介绍
组件(Component)是界面搭建与显示的最小单位,HarmonyOS ArkUI声明式开发范式为开发者提供了丰富多样的UI组件,我们可以使用这些组件轻松的编写出更加丰富、漂亮的界面。
组件根据功能可以分为以下五大类:基础组件、容器组件、媒体组件、绘制组件、画布组件。其中基础组件是视图层的基本组成单元,包括Text、Image、TextInput、Button、LoadingProgress等
Text
Text组件用于在界面上展示一段文本信息,可以包含子组件Span。
针对包含文本元素的组件,例如Text、Span、Button、TextInput等,可使用fontColor、fontSize、fontStyle、 fontWeight、fontFamily这些文本样式,分别设置文本的颜色、大小、样式、粗细以及字体,文本样式的属性如下表:
名称 |
参数类型 |
描述 |
fontColor |
ResourceColor |
设置文本颜色。 |
fontSize |
Length | Resource |
设置文本尺寸,Length为number类型时,使用fp单位。 |
fontStyle |
FontStyle |
设置文本的字体样式。默认值:FontStyle.Normal。 |
fontWeight |
number | FontWeight | string |
|
fontFamily |
string | Resource |
设置文本的字体列表。使用多个字体,使用“,”进行分割,优先级按顺序生效。例如:“Arial,sans-serif”。 |
下面示例代码中包含两个Text组件,第一个使用的是默认样式,第二个给文本设置了一些文本样式。
@Entry
@Component
struct TextDemo {
build() {
Row() {
Column() {
Text('HarmonyOS')
Text('HarmonyOS')
.fontColor(Color.Blue)
.fontSize(20)
.fontStyle(FontStyle.Italic)
.fontWeight(FontWeight.Bold)
.fontFamily('Arial')
}
.width('100%')
}
.backgroundColor(0xF1F3F5)
.height('100%')
}
}
效果图如下:
![](/assets/blank.gif)
除了通用属性和文本样式设置,下面列举了一些Text组件的常用属性的使用。
设置文本对齐方式
使用textAlign属性可以设置文本的对齐方式,示例代码如下:
Text('HarmonyOS')
.width(200)
.textAlign(TextAlign.Start)
.backgroundColor(0xE6F2FD)
textAlign参数类型为TextAlign,定义了以下几种类型:
Start(默认值):水平对齐首部。
![](/assets/blank.gif)
Center:水平居中对齐。
![](/assets/blank.gif)
End:水平对齐尾部。
![](/assets/blank.gif)
设置文本超长显示
当文本内容较多超出了Text组件范围的时候,您可以使用textOverflow设置文本截取方式,需配合maxLines使用,单独设置不生效,maxLines用于设置文本显示最大行数。下面的示例代码将textOverflow设置为Ellipsis ,它将显示不下的文本用 “...” 表示:
Text('This is the text content of Text Component This is the text content of Text Component')
.fontSize(16)
.maxLines(1)
.textOverflow({overflow:TextOverflow.Ellipsis})
.backgroundColor(0xE6F2FD)
效果图如下:
![](/assets/blank.gif)
设置文本装饰线
使用decoration设置文本装饰线样式及其颜色,大家在浏览网页的时候经常可以看到装饰线,例如带有下划线超链接文本。decoration包含type和color两个参数,其中type用于设置装饰线样式,参数类型为TextDecorationTyp,color为可选参数。
下面的示例代码给文本设置了下划线,下划线颜色为黑色:
Text('HarmonyOS')
.fontSize(20)
.decoration({ type: TextDecorationType.Underline, color: Color.Black })
.backgroundColor(0xE6F2FD)
效果图如下:
![](/assets/blank.gif)
TextDecorationTyp包含以下几种类型:
None:不使用文本装饰线。
![](/assets/blank.gif)
Overline:文字上划线修饰。
![](/assets/blank.gif)
LineThrough:穿过文本的修饰线。
![](/assets/blank.gif)
Underline:文字下划线修饰。
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
Image
Image组件用来渲染展示图片,它可以让界面变得更加丰富多彩。只需要给Image组件设置图片地址、宽和高,图片就能加载出来,示例如下:
Image($r("app.media.icon"))
.width(100)
.height(100)
ImageFit包含以下几种类型:
Contain:保持宽高比进行缩小或者放大,使得图片完全显示在显示边界内。
![](/assets/blank.gif)
Cover(默认值):保持宽高比进行缩小或者放大,使得图片两边都大于或等于显示边界。
![](/assets/blank.gif)
Auto:自适应显示。
![](/assets/blank.gif)
Fill:不保持宽高比进行放大缩小,使得图片充满显示边界。
![](/assets/blank.gif)
ScaleDown:保持宽高比显示,图片缩小或者保持不变。
![](/assets/blank.gif)
None:保持原有尺寸显示。
![](/assets/blank.gif)
加载网络图片
比如浏览新闻的时候,图片一般从网络加载而来,Image组件支持加载网络图片,将图片地址换成网络图片地址进行加载。
Image('https://www.example.com/xxx.png')
为了成功加载网络图片,您需要在module.json5文件中申明网络访问权限。
{
"module" : {
"requestPermissions":[
{
"name": "ohos.permission.INTERNET"
}
]
}
}
![](/assets/blank.gif)
应用访问网络需要申请ohos.permission.INTERNET权限,因为HarmonyOS提供了一种访问控制机制即应用权限,用来保证这些数据或功能不会被不当或恶意使用。关于应用权限的的详细信息开发者可以参考:访问控制。
TextInput
TextInput组件用于输入单行文本,响应输入事件。TextInput的使用也非常广泛,例如应用登录账号密码、发送消息等。和Text组件一样,TextInput组件也支持文本样式设置,下面的示例代码实现了一个简单的输入框:
TextInput()
.fontColor(Color.Blue)
.fontSize(20)
.fontStyle(FontStyle.Italic)
.fontWeight(FontWeight.Bold)
.fontFamily('Arial')
效果图如下:
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
设置光标位置
可以使用TextInputController动态设置光位置,下面的示例代码使用TextInputController的caretPosition方法,将光标移动到了第二个字符后。
@Entry
@Component
struct TextInputDemo {
controller: TextInputController = new TextInputController()build() {
Column() {
TextInput({ controller: this.controller })
Button('设置光标位置')
.onClick(() => {
this.controller.caretPosition(2)
})
}
.height('100%')
.backgroundColor(0xE6F2FD)
}
}
效果图如下:
![](/assets/blank.gif)
获取输入文本
我们可以给TextInput设置onChange事件,输入文本发生变化时触发回调,下面示例代码中的value为实时获取用户输入的文本信息。
@Entry
@Component
struct TextInputDemo {
@State text: string = ''build() {
Column() {
TextInput({ placeholder: '请输入账号' })
.caretColor(Color.Blue)
.onChange((value: string) => {
this.text = value
})
Text(this.text)
}
.alignItems(HorizontalAlign.Center)
.padding(12)
.backgroundColor(0xE6F2FD)
}
}
效果图如下:
![](/assets/blank.gif)
Button
Button组件主要用来响应点击操作,可以包含子组件。下面的示例代码实现了一个“登录按钮”:
Button('登录', { type: ButtonType.Capsule, stateEffect: true })
.width('90%')
.height(40)
.fontSize(16)
.fontWeight(FontWeight.Medium)
.backgroundColor('#007DFF')
效果图如下:
![](/assets/blank.gif)
设置按钮样式
type用于定义按钮样式,示例代码中ButtonType.Capsule表示胶囊形按钮;stateEffect用于设置按钮按下时是否开启切换效果,当状态置为false时,点击效果关闭,默认值为true。
我们可以设置多种样式的Button,除了Capsule可以以设置Normal和Circle:
Capsule:胶囊型按钮(圆角默认为高度的一半)。
![](/assets/blank.gif)
Circle:圆形按钮。
![](/assets/blank.gif)
Normal:普通按钮(默认不带圆角)。
![](/assets/blank.gif)
设置按钮点击事件
可以给Button绑定onClick事件,每当用户点击Button的时候,就会回调执行onClick方法,调用里面的逻辑代码。
Button('登录', { type: ButtonType.Capsule, stateEffect: true })
...
.onClick(() => {
// 处理点击事件逻辑
})
包含子组件
Button组件可以包含子组件,让您可以开发出更丰富多样的Button,下面的示例代码中Button组件包含了一个Image组件:
Button({ type: ButtonType.Circle, stateEffect: true }) {
Image($r('app.media.icon_delete'))
.width(30)
.height(30)
}
.width(55)
.height(55)
.backgroundColor(0x317aff)
效果图如下:
![](/assets/blank.gif)
![](/assets/blank.gif)
布局容器Column&Row组件的使用
![](/assets/blank.gif)
![](/assets/blank.gif)
线性布局容器表示按照垂直方向或者水平方向排列子组件的容器,ArkTS提供了Column和Row容器来实现线性布局。
Column表示沿垂直方向布局的容器。
Row表示沿水平方向布局的容器。
主轴和交叉轴概念
在布局容器中,默认存在两根轴,分别是主轴和交叉轴,这两个轴始终是相互垂直的。不同的容器中主轴的方向不一样的。
主轴:在Column容器中的子组件是按照从上到下的垂直方向布局的,其主轴的方向是垂直方向;在Row容器中的组件是按照从左到右的水平方向布局的,其主轴的方向是水平方向。
图2-1 Column容器&Row容器主轴
![](/assets/blank.gif)
交叉轴:与主轴垂直相交的轴线,如果主轴是垂直方向,则交叉轴就是水平方向;如果主轴是水平方向,则交叉轴是垂直方向。
图2-2 Column容器&Row容器交叉轴
![](/assets/blank.gif)
属性介绍
了解布局容器的主轴和交叉轴,主要是为了让大家更好地理解子组件在主轴和交叉轴的排列方式。
接下来,我们将详细讲解Column和Row容器的两个属性justifyContent和alignItems。
属性名称 |
描述 |
justifyContent |
设置子组件在主轴方向上的对齐格式。 |
alignItems |
设置子组件在交叉轴方向上的对齐格式。 |
1. 主轴方向的对齐(justifyContent)
子组件在主轴方向上的对齐使用justifyContent属性来设置,其参数类型是FlexAlign。FlexAlign定义了以下几种类型:
Start:元素在主轴方向首端对齐,第一个元素与行首对齐,同时后续的元素与前一个对齐。
![](/assets/blank.gif)
Center:元素在主轴方向中心对齐,第一个元素与行首的距离以及最后一个元素与行尾距离相同。
![](/assets/blank.gif)
End:元素在主轴方向尾部对齐,最后一个元素与行尾对齐,其他元素与后一个对齐。
![](/assets/blank.gif)
SpaceBetween:元素在主轴方向均匀分配弹性元素,相邻元素之间距离相同。 第一个元素与行首对齐,最后一个元素与行尾对齐。
![](/assets/blank.gif)
SpaceAround:元素在主轴方向均匀分配弹性元素,相邻元素之间距离相同。 第一个元素到行首的距离和最后一个元素到行尾的距离是相邻元素之间距离的一半。
![](/assets/blank.gif)
SpaceEvenly:元素在主轴方向等间距布局,无论是相邻元素还是边界元素到容器的间距都一样。
![](/assets/blank.gif)
2. 交叉轴方向的对齐(alignItems)
子组件在交叉轴方向上的对齐方式使用alignItems属性来设置。
Column容器的主轴是垂直方向,交叉轴是水平方向,其参数类型为HorizontalAlign(水平对齐),HorizontalAlign定义了以下几种类型:
Start:设置子组件在水平方向上按照起始端对齐。
![](/assets/blank.gif)
Center(默认值):设置子组件在水平方向上居中对齐。
![](/assets/blank.gif)
End:设置子组件在水平方向上按照末端对齐。
![](/assets/blank.gif)
Row容器的主轴是水平方向,交叉轴是垂直方向,其参数类型为VerticalAlign(垂直对齐),VerticalAlign定义了以下几种类型:
Top:设置子组件在垂直方向上居顶部对齐。
![](/assets/blank.gif)
Center(默认值):设置子组件在竖直方向上居中对齐。
![](/assets/blank.gif)
Bottom:设置子组件在竖直方向上居底部对齐。
![](/assets/blank.gif)
接口介绍
接下来,我们介绍Column和Row容器的接口。
容器组件 |
接口 |
Column |
Column(value?:{space?: string | number}) |
Row |
Row(value?:{space?: string | number}) |
Column和Row容器的接口都有一个可选参数space,表示子组件在主轴方向上的间距。
效果如下:
![](/assets/blank.gif)
ArKTS的基本组件相关推荐
- HarmonyOS布局容器组件
一个页面需要由若干组件组成,我们如何才能让这些组件有条不紊的在页面上布局,就需要借助容器组件来完成,比如布局容器Colum,Row等. 一般进行页面开发的流程中,当我们拿到页面设计图时,需要先对页面进 ...
- ArkTS的Grid与GridItem(网格容器与网格容器中单项内容容器)
目录 说些废话 环境 代码 展示 说些废话 官方文档:容器组件-Grid(基于ArkTS的声明式开发范式) 没有安装到真机上,直接用预览器看的.创建的是API为8的华为鸿蒙工程. 环境 ...
- 用ArkTs在鸿蒙系统上画一个世界杯海报
偶然看到了CSDN关于世界杯的征文活动: 用代码画一个足球? 哈哈很有意思! 想了想,画一个自定义View(足球),当然是使用Canvas了,但除了Canvas还有没有其它方法呢?那是必须的了,那就是 ...
- 视频播放器(ArkTS)
介绍 本篇Codelab使用ArkTS语言实现视频播放器,主要包括视频获取和视频播放功能: 获取本地视频和网络视频. 通过AVPlayer进行视频播放. 通过手势调节屏幕亮度和视频播放音量. 相关概念 ...
- OpenHarmony/HarmonyOS中用ArkTS实现登陆界面
OpenHarmony/HarmonyOS中用ArkTS实现登陆界面 作者:坚果 团队:坚果派 公众号:"大前端之旅" 润开鸿技术专家,华为HDE,InfoQ签约作者,OpenHa ...
- 第四天:Vue组件的slot以及webpack
插槽 认识slot 在生活中,很多地方都有插槽,电脑的USB插槽,插板中的电源插槽等. 插槽的目的是让我们原来的设备具备更多的扩展性.比如电脑的USB我们可以插入U盘.鼠标.键盘.硬盘.手机.音响等等 ...
- 第三天:Vue的组件化
1.认识组件化 我们将一个完整的页面分成很多个组件,每个组件都用于实现页面的一个功能块,而每一个组件又可以进行细分. 组件化是Vuejs中的重要思想,它提供了一种抽象,让我们可以开发出一个个独立可复用 ...
- 客快物流大数据项目(六):Docker与虚拟机的形象比喻及组件介绍
目录 Docker与虚拟机的形象比喻及组件介绍 一.Docker与虚拟机的形象比喻
- 2021年大数据Hadoop(二十六):YARN三大组件介绍
全网最详细的Hadoop文章系列,强烈建议收藏加关注! 后面更新文章都会列出历史文章目录,帮助大家回顾知识重点. 目录 本系列历史文章 前言 Yarn三大组件介绍 ResourceManager No ...
最新文章
- android中设置控件获得焦点 (转)
- 【怎样写代码】工厂三兄弟之抽象工厂模式(三):产品等级结构与产品族
- pta7-3 统计不及格人数_编写程序,统计学生的成绩信息
- 计算机组成原理 — CPU — 指令集架构类型
- tjoi2018D2T2(luogu4590) 游园会 (状压dp)
- python script文件夹在哪_Python获取当前脚本文件夹(Script)的绝对路径方法代码
- ASP.NET MVC 动态选择VIEW
- 经验从哪里来?从痛苦中来!
- 在大厂做螺丝钉?还是去新赛道攻城略地?看看这届年轻人怎么说
- IIS错误代码500.21 ,Nhibernate更新报错,委托的使用。action传参数
- 2010年6月计算机组织与结构,2010 计算机组织与体系结构课程设计.doc
- html期末作业代码网页设计——代码质量好-宠物网(8页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 计算机毕设网页设计源码
- erp系统用MySQL吗_教你如何给ERP系统选数据库
- python广义矩估计_用EVIEWS进行估计时提示Near singular matrix解析
- 组合优化问题的典型事例
- 配色表 色卡 前段色彩
- 【第二十篇】Flowable中的任务回退
- odoo 企业邮箱配置发送邮件
- linux 查看当前用户和组的信息,Linux查看所有用户和组信息
- 斐波那契数列求和公式
热门文章
- Kotlin 使用命令行执行 kts 脚本
- c语言 int max,C语言 0x7fffffff是多少(也就是INT_MAX,首位是 0,其余都是1,f代表1111)...
- 阿迪达斯推出新一代UltraBOOST 19系列四款限定配色跑鞋
- Edge浏览器经常崩溃、卡死、黑屏解决方法(解决完整性冲突/增加显卡占用)
- amd 5600g 主机运行ubuntu桌面浏览器崩溃故障初探
- c语言 数列累乘法,高中数学,掌握累乘法的特点,求数列的通项,很简单!
- 【Qt学习】 登录验证 注册 功能实现
- 技术帖:这才是一块真正好的手机屏幕!秒懂
- Django启动服务器无效的解决办法
- 二十六、图形用户界面