组件

  • 组件(Component)是界面搭建与显示的最小单位,我们可以使用组件轻松的编写出丰富、漂亮的界面。

  • 组件根据功能可以分为以下五大类:基础组件、容器组件、媒体组件、绘制组件、画布组件。其中基础组件是视图层的基本组成单元,包括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

设置文本的字体粗细,number类型取值[100, 900],取值间隔为100,默认为400,取值越大,字体越粗。string类型仅支持number类型取值的字符串形式,例如“400”,以及“bold”、“bolder”、“lighter”、“regular”、“medium”,分别对应FontWeight中相应的枚举值。默认值:FontWeight.Normal。

fontFamily

string | Resource

设置文本的字体列表。使用多个字体,使用“,”进行分割,优先级按顺序生效。例如:“Arial,sans-serif”。

除了通用属性和文本样式设置,下面列举了一些Text组件的常用属性的使用。

设置文本对齐方式

使用textAlign属性可以设置文本的对齐方式,示例代码如下:

Text('HarmonyOS')

.width(200)

.textAlign(TextAlign.Start)

.backgroundColor(0xE6F2FD)

textAlign参数类型为TextAlign,定义了以下几种类型:

  • Start(默认值):水平对齐首部。

  • Center:水平居中对齐。

  • End:水平对齐尾部。

设置文本超长显示

当文本内容较多超出了Text组件范围的时候,您可以使用textOverflow设置文本截取方式,需配合maxLines使用,单独设置不生效,maxLines用于设置文本显示最大行数。下面的示例代码将textOverflow设置为Ellipsis ,它将显示不下的文本用 “...” 表示:

设置文本装饰线

使用decoration设置文本装饰线样式及其颜色,大家在浏览网页的时候经常可以看到装饰线,例如带有下划线超链接文本。decoration包含type和color两个参数,其中type用于设置装饰线样式,参数类型为TextDecorationTyp,color为可选参数。

Image组件

Image组件用来渲染展示图片,它可以让界面变得更加丰富多彩。只需要给Image组件设置图片地址、宽和高,图片就能加载出来。

ImageFit包含以下几种类型:

  • Contain:保持宽高比进行缩小或者放大,使得图片完全显示在显示边界内。

  • Cover(默认值):保持宽高比进行缩小或者放大,使得图片两边都大于或等于显示边界。

  • Auto:自适应显示。

  • Fill:不保持宽高比进行放大缩小,使得图片充满显示边界。

  • ScaleDown:保持宽高比显示,图片缩小或者保持不变。

  • None:保持原有尺寸显示。

加载网络图片

比如浏览新闻的时候,图片一般从网络加载而来,Image组件支持加载网络图片,将图片地址换成网络图片地址进行加载。

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

为了成功加载网络图片,您需要在module.json5文件中申明网络访问权限。

{

"module" : {

"requestPermissions":[

{

"name": "ohos.permission.INTERNET"

}

]

}

}

TextInput组件

设置输入提示文本
设置输入类型

type的参数类型为InputType,包含以下几种输入类型:

  • Normal:基本输入模式。支持输入数字、字母、下划线、空格、特殊字符。

  • Password:密码输入模式。

  • Email:e-mail地址输入模式。

  • Number:纯数字输入模式。

设置光标位置

可以使用TextInputController动态设置光位置,下面的示例代码使用TextInputController的caretPosition方法,将光标移动到了第二个字符后。

获取输入文本

我们可以给TextInput设置onChange事件,输入文本发生变化时触发回调,下面示例代码中的value为实时获取用户输入的文本信息。

Button组件

Button组件主要用来响应点击操作,可以包含子组件。下面的示例代码实现了一个“登录按钮”:

Button('登录', { type: ButtonType.Capsule, stateEffect: true })

.width('90%')

.height(40)

.fontSize(16)

.fontWeight(FontWeight.Medium)

.backgroundColor('#007DFF')

效果图如下:

设置按钮样式

type用于定义按钮样式,示例代码中ButtonType.Capsule表示胶囊形按钮;stateEffect用于设置按钮按下时是否开启切换效果,当状态置为false时,点击效果关闭,默认值为true。

我们可以设置多种样式的Button,除了Capsule可以以设置Normal和Circle:

  • Capsule:胶囊型按钮(圆角默认为高度的一半)。

  • Circle:圆形按钮。

  • Normal:普通按钮(默认不带圆角)。

设置按钮点击事件

可以给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)

效果图如下:

LoadingProgress组件

LoadingProgress组件用于显示加载进展,比如应用的登录界面,当我们点击登录的时候,显示的“正在登录”的进度条状态。LoadingProgress的使用非常简单,只需要设置颜色和宽高就可以了。

LoadingProgress()

.color(Color.Blue)

.height(60)

.width(60)

效果图如下:

Column&Row组件的使用

布局容器概念

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

  • Column表示沿垂直方向布局的容器。

  • Row表示沿水平方向布局的容器。

主轴和交叉轴概念

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

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

  • 交叉轴:与主轴垂直相交的轴线,如果主轴是垂直方向,则交叉轴就是水平方向;如果主轴是水平方向,则交叉轴是垂直方向。

属性介绍

了解布局容器的主轴和交叉轴,主要是为了让大家更好地理解子组件在主轴和交叉轴的排列方式。

接下来,我们将详细讲解Column和Row容器的两个属性justifyContent和alignItems。

属性名称

描述

justifyContent

设置子组件在主轴方向上的对齐格式。

alignItems

设置子组件在交叉轴方向上的对齐格式。

1. 主轴方向的对齐(justifyContent)

子组件在主轴方向上的对齐使用justifyContent属性来设置,其参数类型是FlexAlign。FlexAlign定义了以下几种类型:

  • Start:元素在主轴方向首端对齐,第一个元素与行首对齐,同时后续的元素与前一个对齐。

  • Center:元素在主轴方向中心对齐,第一个元素与行首的距离以及最后一个元素与行尾距离相同。

  • End:元素在主轴方向尾部对齐,最后一个元素与行尾对齐,其他元素与后一个对齐。

  • SpaceBetween:元素在主轴方向均匀分配弹性元素,相邻元素之间距离相同。 第一个元素与行首对齐,最后一个元素与行尾对齐。

  • SpaceAround:元素在主轴方向均匀分配弹性元素,相邻元素之间距离相同。 第一个元素到行首的距离和最后一个元素到行尾的距离是相邻元素之间距离的一半。

  • SpaceEvenly:元素在主轴方向等间距布局,无论是相邻元素还是边界元素到容器的间距都一样。

2. 交叉轴方向的对齐(alignItems)

子组件在交叉轴方向上的对齐方式使用alignItems属性来设置。

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

  • Start:设置子组件在水平方向上按照起始端对齐。

  • Center(默认值):设置子组件在水平方向上居中对齐。

  • End:设置子组件在水平方向上按照末端对齐。

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

  • Top:设置子组件在垂直方向上居顶部对齐。

  • Center(默认值):设置子组件在竖直方向上居中对齐。

  • Bottom:设置子组件在竖直方向上居底部对齐。

接口介绍

接下来,我们介绍Column和Row容器的接口。

容器组件

接口

Column

Column(value?:{space?: string | number})

Row

Row(value?:{space?: string | number})

Column和Row容器的接口都有一个可选参数space,表示子组件在主轴方向上的间距。

效果如下:

梅科尔工作室-张黎娜-鸿蒙笔记2相关推荐

  1. 梅科尔工作室-张黎娜-鸿蒙笔记3

    list组件 由list容器组件和listitem容器组件构成,list是一个大容器,listitem是大容器里的小容器. 使用说明 父子组件(自定义组件) 子组件导出用export语句 子组件中不能 ...

  2. 梅科尔工作室-郜翱翔-鸿蒙笔记1

    鸿蒙简介 华为鸿蒙系统(HUAWEI Harmony OS),是华为公司在2019年8月9日于东莞举行华为开发者大会(HDC.2019)上正式发布的操作系统. 华为鸿蒙系统是一款全新的面向全场景的分布 ...

  3. 梅科尔工作室E1-张冉-鸿蒙笔记4

    @ohos.router (页面路由) 导入模块 import router from'@ohos.router' router.push push(options: RouterOptions): ...

  4. 梅科尔工作室-于天姿-鸿蒙笔记4

    一.路由跳转 1.导入 首先导入router模块 2.跳转方式 方式一 router.push(),跳转到指定页面. 每调用一次router.push()方法,均会新建一个页面.默认情况下,页面栈数量 ...

  5. 梅科尔工作室E1-张冉-鸿蒙笔记2

    文本 基本操作 资料 针对包含文本元素的组件,例如Text.Span.Button.TextInput等,可使用fontColor.fontSize.fontStyle. fontWeight.fon ...

  6. 梅科尔工作室-杨灿-鸿蒙笔记1

    1.主要目录配置文件作用 stage模型下: AppScope>app.json5           是应用的全局的配置文件,用于存放应用           公共的配置信息. entry模块 ...

  7. 梅科尔工作室-徐锦航-鸿蒙笔记2

    基础组件的应用 常用基础组件 Image:渲染.展示图片,支持加载网络和本地图片 Text Textinput:输入单行文本 Button:响应点击操作 构建简单的页面 容器组件 有两个横向布局,所以 ...

  8. 梅科尔工作室-杨灿-鸿蒙笔记2

    组件:界面搭建与显示的最小单元 基础组件: Text组件:用于界面上展示一段文本信息,可以包含子组件span Textinput组件:用于输入单行文本,响应输入时间 image组件:支持加载本地图片和 ...

  9. 梅科尔工作室-王宣-鸿蒙笔记1

    一.主要目录配置文件作用 1. stage模型 ①app.json模块    AppScope>app.json5是应用的全局的配置文件,用于存放应用公共的配置信息. bundleName是包名 ...

最新文章

  1. 计算机显示时区怎么更改,电脑如何设置显示多时区时间?
  2. C++ STL 逆转旋转 reverse reverse_copy rotate
  3. C++设计模式实现--策略(Strategy)模式
  4. pytorch笔记——简易回归问题
  5. 解决SurfaceView渲染的各种疑难杂症
  6. 企业级 SpringBoot 教程 (十四)在springboot中用redis实现消息队列
  7. HTML5格式问题,你遇到了吗?
  8. idea jar包重新依赖_分布式架构系列:jar包依赖管理
  9. cjson构建_cjson创建数组
  10. python 省份排序_Python常用的排序
  11. Python官网无法打开解决方案
  12. 流批OLAP一体的flink引擎
  13. Elasticsearch系列——(1.1)倒排索引原理
  14. python调用百度AI识别文字和表格
  15. https 请求的端口是443 注意
  16. Android 输入事件一撸到底之View接盘侠(3)
  17. Java-pdf无限压缩方案-优化内存问题
  18. quartus编译报错:Error (176310): Can‘t place multiple pins assigned to pin location Pin_F16 (IOPAD_X34_Y1
  19. 李国庆是一匹野马,但俞渝不是草原!
  20. AD模数转换DA数模转换

热门文章

  1. 我的2013,梦在路上
  2. 七牛直播sdk快速接入demo
  3. 表示因果的三种图:DAG, MAG and PAG
  4. python 调用event handler_扣丁学堂Python开发之调用语音模块时报错及解决方法
  5. TRC肝炎病毒蛋白酶标记抑制剂丨TRC Telaprevir-d4说明书
  6. NLP-预训练模型-2019-NLU+NLG:T5【Text-to-Text 预训练模型超大规模探索】【 微调T5用于文本摘要】
  7. Minecraft 1.12.2 Java Edition 打开前没有shaderpacks文件夹,如何加光影?
  8. windows无法终止PID的进程,拒绝访问
  9. java 发送邮件No appropriate protocol (protocol is disabled or cipher suites are inappropriate)
  10. VC2017编译zxing