HarmonyOS鸿蒙Next 3.1.2 Span组件
HarmonyOS鸿蒙Next 3.1.2 Span组件 在正式演示文本段落组件Span之前,我想建立一个列表导航页面,方便随时跳转到相应的组件演示页面。
1.建立页面导航
将上一小节演示Text组件的index.ets页面复制粘贴为TextSample.ets页面。修改index.ets页面的代码为:
@Extend(Text) function li() {
.fontColor($r("app.color.fgLevel1"))
.fontSize($r("app.float.fontSizeSubTitle1"))
.fontWeight(Number($r("app.float.fontWeightSubTitle1")))
}
@Entry
@Component
struct Index {
build() {
Column({space:8}) {
Text('第3章 基础组件')
.fontColor($r("app.color.fgLevel1"))
.fontSize($r("app.float.fontSizeH6"))
Navigator({ target: 'pages/TextSample', type: NavigationType.Push }) {
Text('1.Text组件').li()
}
Navigator({ target: 'pages/SpanSample', type: NavigationType.Push }) {
Text('2.Span组件').li()
}
}
.width('100%')
.height('100%')
.padding({top: $r("app.float.spaceTop"), bottom:$r("app.float.spaceBottom"), left:$r("app.float.spaceLeft"), right: $r("app.float.spaceRight")}) // 屏幕边缘间隔
.backgroundColor($r("app.color.appBg")) // App背景颜色
.alignItems(HorizontalAlign.Start)
}
}
修改config.json文件配置,增加TextSample页面和SpanSample页面:
"pages": [
"pages/index",
"pages/TextSample",
"pages/SpanSample"
],
修改TextSample.ets页面,将代码:
struct Index {
改为:
struct TextSample {
所有页面的struct命名必须唯一,否则会编译冲突。
然后,在TextSample.ets页面顶部(Column布局组件下)加入返回首页的链接代码:
// 返回首页
Row({space:8}){
Image($r("app.media.ic_back")).width(24).height(24)
Navigator({ target: 'pages/index', type: NavigationType.Back }) {
Text('返回').title()
}
}
如下图所示:
在各媒体资源文件夹下面加入返回图标ic_back.png。
然后新建一个SpanSample.ets的页面,用于演示Span组件。初始代码如下:
/**
* 3.1.2 Span组件
*/
@Entry
@Component
struct SpanSample {
build() {
Stack({ alignContent: Alignment.TopStart }){
Scroll() {
Column({space:16}){
// 返回首页
Row({space:8}){
Image($r("app.media.ic_back")).width(24).height(24)
Navigator({ target: 'pages/index', type: NavigationType.Back }) {
Text('返回')
.fontColor($r("app.color.fgLevel1"))
.fontSize($r("app.float.fontSizeH8"))
.fontWeight(Number($r("app.float.fontWeightH8")))
}
}
}.padding({left: $r('app.float.spaceLeft'), right: $r('app.float.spaceRight')}).alignItems(HorizontalAlign.Start)
}
}.width('100%').height('100%').backgroundColor($r("app.color.appBg")).padding({top:$r('app.float.spaceTop'), bottom:$r('app.float.spaceBottom')})
}
}
App运行效果如下:
2.接口:Span(content: string)
文本段落组件Span,只能作为Text子组件,呈现一段文本信息。接口调用方法和Text组件相同,示范代码如下:
/**
* 文本段落组件(Span):只能作为Text子组件,呈现一段文本信息。
* 接口:Span(content: string)
* content: string 文本内容。
*/
Text() {
Span('鸿蒙开发ArkUI最佳实践')
.fontColor($r("app.color.fgLevel1"))
.fontSize($r("app.float.fontSizeBody1"))
.fontWeight(Number($r("app.float.fontWeightBody1")))
}
效果如下:
注意:在包含Span子组件的时候,Text组件中设置的文本不会生效,我们做个实验,代码如下:
/**
* Text组件的文本内容,包含子组件Span时不生效,显示Span内容。
*/
Text('儿子出生后,我说话都没人听的') { // 这段文本不会显示
Span('我猜老爸在玩消失')
.fontColor($r("app.color.fgLevel1"))
.fontSize($r("app.float.fontSizeBody1"))
.fontWeight(Number($r("app.float.fontWeightBody1")))
}
效果如下:
3.Span的属性
在鸿蒙官方开发文档中提到: 通用属性方法仅支持通用文本样式。 仅列出了decoration( 设置文本装饰线样式及其颜色)和 textCase ( 设置文本大小写 )的属性,使用方式和Text的同名属性使用方法一摸一样,这里就不赘述了。示例代码:
/**
* Span的属性
*/
Text() {
Span('HarmonyOS ArkUI For eTS.')
.fontColor($r("app.color.fgLevel1"))
.fontSize($r("app.float.fontSizeBody1"))
.fontWeight(Number($r("app.float.fontWeightBody1")))
.decoration({ type: TextDecorationType.Underline, color: $r("app.color.danger") }) // 设置文本装饰线样式及其颜色
.textCase(TextCase.UpperCase) // 设置文本大小写
效果如下:
【源码地址:https://gitee.com/cloudev/harmonyos3/tree/master/3.0/BaseComponent】
Span组件是用于在文本中设置不同样式的组件。它允许开发者在同一文本块中应用多种字体、颜色、大小等样式。Span组件通常与Text组件结合使用,通过Span组件可以对Text组件中的部分文本进行个性化设置。
Span组件的主要属性包括:
- textColor:设置文本颜色。
- textSize:设置文本大小。
- fontFamily:设置字体。
- fontWeight:设置字体粗细。
- textDecoration:设置文本装饰,如下划线、删除线等。
- backgroundColor:设置文本背景颜色。
使用Span组件时,可以通过Text
组件的addSpan
方法将Span添加到文本中。例如:
Text('Hello, HarmonyOS')
.addSpan(Span('HarmonyOS')
.textColor(Color.Red)
.textSize(20)
.fontWeight(FontWeight.Bold))
在这个例子中,"HarmonyOS"文本将以红色、20号字体大小和粗体显示,而"Hello, "部分则保持默认样式。
Span组件的灵活性使得开发者能够在不使用多个Text组件的情况下,实现复杂的文本样式组合。
更多关于HarmonyOS鸿蒙Next 3.1.2 Span组件的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
HarmonyOS鸿蒙Next 3.1.2中的Span
组件是用于在文本中设置特定样式或行为的轻量级组件。它允许开发者对文本的某一部分进行定制,如改变字体颜色、大小、添加点击事件等。Span
通常与Text
组件结合使用,通过Text
的spans
属性来应用多个Span
,从而实现复杂的文本效果。例如,可以在一段文本中突出显示关键词或添加超链接。Span
的使用提高了文本处理的灵活性和表现力,适用于需要精细化文本控制的场景。