HarmonyOS 鸿蒙Next 如何实现Text中适配某种规则字体颜色改变 例如消息气泡中@人的字体为蓝色 其余为黑色

发布于 1周前 作者 ionicwang 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 如何实现Text中适配某种规则字体颜色改变 例如消息气泡中@人的字体为蓝色 其余为黑色

如何实现Text中适配某种规则字体颜色改变,例如消息气泡中@人的字体为蓝色,其余为黑色

2 回复

您可以看一下@styles能否符合需求,这边提供一个demo:

import { componentSnapshot } from '@kit.ArkUI'

import { image } from '@kit.ImageKit'

@Entry

@Component

struct Page240819093910119 {

  @State pixmap: image.PixelMap | undefined = undefined

  @Styles fancy() {

    .backgroundColor(Color.Red)

  }

  build() {

    Column() {

      Row() {

        Text('1')

        Text('2')

        Text('3')

        Text('4')

        Text('5')

          .fancy()

        Text('6')

        Text('7')

        Text('8')

        Text('9')

        }

      }

    }

}

更多关于HarmonyOS 鸿蒙Next 如何实现Text中适配某种规则字体颜色改变 例如消息气泡中@人的字体为蓝色 其余为黑色的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,要实现Text中根据特定规则改变字体颜色,例如消息气泡中@人的字体为蓝色,其余为黑色,可以通过以下方式实现:

  1. 使用SpannableString

    • 创建一个SpannableString对象,该对象包含整个文本内容。
    • 使用ForegroundColorSpan设置不同部分的文本颜色。
    • 遍历文本内容,查找@符号及其后的用户名,应用蓝色ForegroundColorSpan
    • 对剩余文本应用黑色ForegroundColorSpan
  2. 代码示例

    String text = "Hello [@user](/user/user), this is a test message.";
    SpannableString spannableString = new SpannableString(text);
    int start = text.indexOf("@");
    int end = start + findEndOfUsername(text, start); // 自定义方法找到用户名结束位置
    spannableString.setSpan(new ForegroundColorSpan(Color.BLUE), start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    spannableString.setSpan(new ForegroundColorSpan(Color.BLACK), 0, text.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    textView.setText(spannableString);
    

    注意:findEndOfUsername为自定义方法,需根据实际需求实现。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部