
3.1.1 Text组件 原创 精华
本节讲解文本组件Text和Span的基本使用方法,同时讲解第一个声明式语法 @Extend装饰器 ,通过该装饰器重构示例代码。
由于本节展示的组件效果较多,一屏无法展示完,我们可以将默认Hello World页面的布局改为使用Scroll布局组件支持纵向滚动,改造后代码如下:
3.1.1 Text组件
文本组件(Text):用于呈现一段信息。可以包含Span子组件。
1.接口:Text(content?: string)
示例代码:
效果如下:
2.文本对齐方式:.textAlign(TextAlign)
设置多行文本的文本对齐方式,通常配合设置Text的宽度(width)属性。示例代码:
效果如下:
3.太多重复代码,我受不了了!
上述示范代码中总共用到了两种字号大小,一个是标题,一个是正文。每个文本组件都要设置其样式属性,太多重复的代码,后面还有很多演示代码,这样写下去,我有点受不了了,是时候对上述代码进行重构了!
这里提前讲解第一个声明式语法 @Extend装饰器 ,通过该装饰器重构示例代码。更多的声明式语法在《第8章 基于TS扩展的声明式开发规范》中讲解。
@Extend装饰器将新的属性函数添加到内置组件上,如Text、Column、Button等。通过@Extend装饰器可以快速定义并复用组件的自定义样式。这里定义两个@Extend装饰器,分别用来快速定义标题和正文的样式。标题文本样式装饰器写法如下:
注意:@Extend装饰器的注释,只能使用单行注释,如果使用多行注释会导致编译异常,如下代码会有问题:
重构后,代码如下:
嗯,代码干净多了。不过,不要高兴太早,@Extend装饰器还有点小缺点:
它只能应用在定义该装饰器的页面里,无法通过export共享给其它页面调用。同时,如果在其它页面定义了同名的装饰器,如,另一个页面也定义了一个名为"title"或"body"的装饰器,会编译异常,提示重复的定义。
下节我会演示更好的解决方案。
4.设置文本的文本行高:.lineHeight(Length)
注意:文本行高设置值不大于0时,不限制文本行高,自适应字体大小。Length为number类型时单位为fp。
示例代码:
效果如下:
5.设置文本的最大行数和文本超长时的显示方式:.maxLines(number),.textOverflow:({overflow: TextOverflow})
设置文本的最大行数和文本超长时的显示方式通常配合使用。限定最大显示行数后,超出的内容通过.textOverflow属性设置超长的显示方式。
示例代码:
效果如下:
6.设置文本基线的偏移量:.baselineOffset(Length)
示例代码:
效果如下:
7.设置文本装饰线样式及其颜色:.decoration:({type: TextDecorationType,color?: Color})
默认值{type: TextDecorationType.None,color:Color.Black},即,默认不使用文本装饰线,如果使用装饰线,默认颜色为黑色。考虑到“浅色模式/深色模式”适配,当然不能使用这个默认颜色,我们可以使用资源里的颜色。示例代码:
效果如下:
8.设置文本大小写:.textCase(TextCase)
对于英文文本,可以设置保持文本原有大小写、文本采用全小写和文本采用全大写。
示例代码:
效果如下:
至此,文本组件Text的接口和属性已演示完毕。
【源码地址:https://gitee.com/cloudev/harmonyos3/tree/master/3.0/BaseComponent 】
