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】

2 回复

Span组件是用于在文本中设置不同样式的组件。它允许开发者在同一文本块中应用多种字体、颜色、大小等样式。Span组件通常与Text组件结合使用,通过Span组件可以对Text组件中的部分文本进行个性化设置。

Span组件的主要属性包括:

  1. textColor:设置文本颜色。
  2. textSize:设置文本大小。
  3. fontFamily:设置字体。
  4. fontWeight:设置字体粗细。
  5. textDecoration:设置文本装饰,如下划线、删除线等。
  6. 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组件结合使用,通过Textspans属性来应用多个Span,从而实现复杂的文本效果。例如,可以在一段文本中突出显示关键词或添加超链接。Span的使用提高了文本处理的灵活性和表现力,适用于需要精细化文本控制的场景。

回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!