当前位置: 首页 > news >正文

Arkts解决方案<文本样式处理>

在项目中我们经常会遇到同一段文本特定文字样式特殊处理的情况,如:这是一段特殊文字,这句话中对‘特殊’两个进行加粗、字体大小、改变颜色等进行突出显示。这个时候就用到属性字符串(StyledString/MutableStyledString),MutableStyledString继承自StyledString,使用方式为通过TextController提供的setStyledString方法,将属性字符串附加到文本组件,并推荐在onPageShow或者文本组件的onAppear回调中触发绑定。
需要注意的是在aboutToAppear中调用setStyledString方法时,由于该方法运行阶段组件尚未完成创建并成功挂载节点树,因此无法在页面初始化时显示属性字符串。
1、基础使用案例:

import{LengthMetrics}from"@kit.ArkUI";@BuilderexportfunctionMutableStyledStringPageBuilder(){MutableStyledStringPage()}@ComponentV2exportstructMutableStyledStringPage{pageInfos:NavPathStack=newNavPathStack();private content:string='这是测试一和测试二。';controller:TextController=newTextController();// 文本控制器textStyleAttrs:TextStyle=newTextStyle({fontWeight:FontWeight.Bold,// 字体粗细fontSize:LengthMetrics.vp(16),// 字体大小fontStyle:FontStyle.Normal,// 字体样式fontColor:Color.Black// 字体颜色});textStyleAttrs2:TextStyle=newTextStyle({fontWeight:FontWeight.Bold,fontSize:LengthMetrics.vp(16),fontStyle:FontStyle.Normal,fontColor:Color.Red});build(){NavDestination(){Column(){Text(undefined,{controller:this.controller});// 使用controller对文字进行设置}.width('100%')}.onReady((context:NavDestinationContext)=>{this.pageInfos=context.pathStack// 推荐在onReady中使用,但是不能使用条件渲染this.initStyledString();})}initStyledString(){// 不需要对文本渲染后进行改变使用StyledString,反着使用MutableStyledStringconstmutableStr=newMutableStyledString(this.content,[{start:2,// 开始位置length:3,// 改变文字长度styledKey:StyledStringKey.FONT,// 文本类型styledValue:this.textStyleAttrs// 使用样式1},{start:6,length:3,styledKey:StyledStringKey.FONT,styledValue:this.textStyleAttrs2// 使用样式2}]);this.controller.setStyledString(mutableStr);// 设置样式}}


2、应用文本阴影案例

textStyleAttrs3:TextShadowStyle=newTextShadowStyle({radius:5,type:ShadowType.COLOR,color:Color.Red,offsetX:10,offsetY:10})


3、设置事件案例

// 事件设置gestureStyleAttr:GestureStyle=newGestureStyle({onClick:()=>{this.backgroundColor1=Color.Green;},onLongPress:()=>{this.backgroundColor1=Color.Grey;}});// 样式设置constmutableStr=newMutableStyledString(this.content,[{start:0,// 事件起始位length:1,// 长度styledKey:StyledStringKey.GESTURE,styledValue:this.gestureStyleAttr}

最后效果为,点击第一个文字改变背景颜色为绿色,长按第一个文字背景颜色改变为灰色。
日常开发中最常用的就是以上三种。

如何动态修改特效(特效文字index变更)
直接给出简单实现代码:

// 文本样式接口interfaceRangerItem{start:number,// 开始位置length:number,// 特效文字长度styledKey:StyledStringKey,// 文本类型styledValue:StyledStringValue// 使用样式}// 文本样式textStyleAttrs:TextStyle=newTextStyle({fontWeight:FontWeight.Bold,// 字体粗细fontSize:LengthMetrics.vp(16),// 字体大小fontStyle:FontStyle.Normal,// 字体样式fontColor:Color.Black// 字体颜色});// 处理设置样式逻辑conststyledList:Array<RangerItem>=[];// 创建文本样式列表// 这里是遍历获取需要特殊处理文字的逻辑,根据各自逻辑编写// 提取需要处理的文字位置styledList.push({start:0,length:5,styledKey:StyledStringKey.FONT,styledValue:this.textStyleAttrs});// 这里根据实际情况移除多余的内容// 设置文字样式constmutableStr=newMutableStyledString('文本');this.controller.setStyledString(mutableStr);
http://www.jsqmd.com/news/1211338/

相关文章:

  • GitHub热门AI Agent开发教程与框架实战指南
  • Linux系统设置上海时间(24小时制)
  • Android字体适配全攻略:从sp单位到动态调整
  • C++高性能爬虫实战:从libcurl、Gumbo解析到多线程架构设计
  • 183.别堆砌大量自锁网络!CASE 标准状态机写法,分段时序清晰,修改时长无需重构逻辑
  • windows 不翻墙,本地安装Claude Code
  • 告别ChatGPT公式粘贴后出现星号,AI导出鸭无损导出
  • 郑州欧米茄回收价格查询和各大回收平台实测排行(2026年7月最新) - 诚收名表回收平台
  • Godot插件与扩展指南:从使用到开发,提升游戏开发效率
  • Unity人形动画T-Pose偏差修复全攻略:从原理到实战
  • 郑州万国回收价格查询与各大平台实测排行(2026年7月最新数据) - 收的高名表回收平台
  • Win+R黄金命令:高效解决90%电脑问题的5个必备技巧
  • 深度解析:为何 MySQL 集群不宜作为分布式锁,而 Redis 是更优解
  • FPGA寄存器设计
  • C#俄罗斯方块游戏开发:从核心逻辑到图形界面的完整实现
  • SCCM企业设备管理架构与核心场景解析
  • 《系统架构设计师》信息安全技术基础知识
  • Python字符串操作全解析:从基础到高级技巧
  • Vue中nextTick的原理与应用场景详解
  • NestJS项目创建与优化全指南
  • 用户画像分析-基于鸿蒙的AI用户画像分析应用开发实践
  • Jetson Orin NX烧录与设备树修改全指南
  • 如何用 PS 无痕去除图片文字?4 种高效修图方法
  • 大语言模型部署优化:量化技术与工程实践全解析
  • Java像素图像处理
  • ESP32 TCP OTA升级:原理、实现与嵌入式远程固件更新实践
  • 江诗丹顿官方服务项目及价格查询|详细网点地址及热线权威信息公告(2026年7月最新) - 江诗丹顿服务中心
  • 动力电池系统构成与BMS关键技术解析
  • 芯片手册阅读技巧:从英语障碍到高效掌握
  • Android模拟器选型与自动化测试实战指南