HarmonyOS7 富文本片段卡片:用 Span 把混排文本做得更顺手

发布时间:2026/9/9 18:37:42

HarmonyOS7 富文本片段卡片:用 Span 把混排文本做得更顺手 文章目录前言使用场景先讲清楚代码阅读顺序重点实现细节完整代码容易踩坑的地方收个尾前言这篇继续聊 HarmonyOS7 里的Span 富文本组合。如果你刚开始学 ArkUI不建议一上来就背属性名那样很容易看完就忘。更好的方式是先搞清楚这个页面想解决什么问题用户做了什么操作代码又是怎么把这个操作反映到界面上的。这个案例的核心是Span它对应的使用场景是混排文本。我会把它当成一个真实业务里的小模块来拆而不是只贴一段代码结束。读完之后你至少应该能知道这几件事问题答案学什么Span在混排文本场景里的用法看哪里状态字段、核心组件、事件回调重点富文本适合谁刚接触 HarmonyOS7 声明式 UI 的同学使用场景先讲清楚先把页面目标说清楚。这个案例不是为了炫技而是展示一个常见交互片段页面上有内容展示有样式区分也有用户操作后的反馈。小白读这类代码时最容易犯的错误是从第一行样式属性开始抠细节结果看了半天不知道页面到底在干什么。我更建议按这个顺序看找到State确认页面有哪些会变化的数据。找到核心组件比如Span看看它接收了哪些参数。找到onChange、onClick或类似回调理解用户操作之后状态怎么变。最后再看颜色、圆角、间距这些样式属性。这样读下来哪怕代码比较长也不会迷路。代码阅读顺序ArkUI 的声明式 UI 有个特点界面是状态的结果。你不用手动去找某个控件再改它的文本而是改状态框架会根据状态重新刷新相关 UI。在这个案例里布局一般由Column、Row、Scroll、Grid这些容器搭起来。它们负责“东西放在哪里”Span负责“这个功能怎么表现”事件回调负责“用户操作后发生什么”。三者配合起来页面才是完整的。下面这段关键代码可以先看一遍它保留了入口组件和核心逻辑EntryComponentstruct RichTextSpanCard{StateisShow:booleantruebuild(){Column(){if(this.isShow){Column({space:16}){Text(){Span(HarmonyOS).fontSize(22).fontWeight(700).fontColor(THEME_COLOR)Span( 是华为开发的 ).fontSize(16).fontColor(#333333)Span(全场景).fontSize(16).fontWeight(700).fontColor(#FF6B6B)Span( 分布式操作系统。).fontSize(16).fontColor(#333333)}Text(){Span(重要提示).fontSize(14).fontWeight(700).fontColor(#FF6B6B).decoration({type:TextDecorationType.Underline,color:#FF6B6B})重点实现细节把上面的代码拆开看会更容易理解State是页面的记忆点输入、点击、选择这类变化都会先落到这里。这里有一个很实用的判断方法如果你删掉某个状态字段页面还是否能表达当前交互如果不能说明这个状态就是业务状态如果删掉只是少了颜色或间距那它更多是视觉层面的东西。对新手来说先区分“业务状态”和“样式配置”很重要。很多页面写乱都是因为把这两类东西混在一起了。完整代码下面是完整代码。文章里的组件名已经换成更贴近业务的英文命名可以直接复制到独立页面里阅读。建议你先跑原样再尝试改一个状态字段或一个样式属性看界面怎么变化。import{LengthMetrics}fromkit.ArkUIconstPAGE_BG_COLOR:string#F5F6FAconstCARD_BG_COLOR:string#FFFFFFconstTHEME_COLOR:string#4D96FFconstSUBTEXT_COLOR:string#8A8A8AEntryComponentstruct RichTextSpanCard{StateisShow:booleantruebuild(){Column(){if(this.isShow){Column({space:16}){Text(){Span(HarmonyOS).fontSize(22).fontWeight(700).fontColor(THEME_COLOR)Span( 是华为开发的 ).fontSize(16).fontColor(#333333)Span(全场景).fontSize(16).fontWeight(700).fontColor(#FF6B6B)Span( 分布式操作系统。).fontSize(16).fontColor(#333333)}Text(){Span(重要提示).fontSize(14).fontWeight(700).fontColor(#FF6B6B).decoration({type:TextDecorationType.Underline,color:#FF6B6B})Span(使用富文本时 ).fontSize(14).fontColor(#666666)Span(每个 Span 可独立设置样式).fontSize(14).fontWeight(700).fontColor(THEME_COLOR)}Text(){Span(E mc).fontSize(20).fontColor(#333333)Span(2).fontSize(14).baselineOffset(LengthMetrics.vp(-8)).fontColor(#FFA500)Span( 上标示例).fontSize(14).fontColor(#999999)}Text(){Span(H).fontSize(26).fontWeight(700).fontColor(#FFD93D)Span(2).fontSize(16).baselineOffset(LengthMetrics.vp(-10)).fontColor(#FFD93D)Span(O 化学分子式).fontSize(16).fontColor(#555555)}}.width(100%).alignItems(HorizontalAlign.Start).padding(16).backgroundColor(CARD_BG_COLOR).borderRadius(12)}Text(富文本片段卡片Text 富文本Text Span 混合样式).fontSize(12).fontColor(SUBTEXT_COLOR).margin({top:12})}.width(100%).height(100%).backgroundColor(PAGE_BG_COLOR).padding(16)}}容易踩坑的地方如果把这个案例放进真实项目我会额外注意这些点命名要清楚状态字段最好能直接看出用途不要都叫value或flag。边界要处理空内容、超长内容、禁用状态、加载状态都要提前考虑。样式要克制颜色和阴影不是越多越好能表达层级就够了。交互要有反馈用户点了、输入了、选择了页面要给出明确变化。这些不是语法问题但会直接影响页面质量。收个尾这个案例可以继续往两个方向练。一个方向是改数据把静态内容换成数组或接口返回另一个方向是改交互比如增加清空、重置、禁用、加载中等状态。学 HarmonyOS7 组件时不要只满足于“代码能跑”。能说清楚为什么这么写才算真正理解了这个案例。
延伸阅读

更多相关文章

2026/9/6 16:23:10

稀疏注意力与长周期智能体:M3模型的技术突破与应用实践

如果你是一名开发者,最近可能已经感受到了AI大模型领域的一个明显变化:各大厂商不再单纯比拼参数规模,而是转向了更实用的能力竞争。特别是当处理长文档、复杂代码库或多轮对话时,传统模型往往因为上下文长度限制而"忘记&quo…

2026/8/31 14:04:21

Bidfans浏览器缓存精准管控技术解决资源更新错乱问题

前端浏览器缓存是提升访问速度的核心手段,但多数代拍平台缺乏精细化缓存管控,长期存在缓存更新错乱、静态资源残留、页面版本滞后、新旧代码混杂等顽固问题。平台功能迭代、页面样式更新、功能修复后,大量用户因本地旧缓存残留,持…

2026/9/6 20:50:43

GitHub项目复现实战:5步解决90%依赖冲突与版本兼容性问题

GitHub项目复现实战:5步攻克90%依赖冲突与版本兼容性问题1. 理解依赖冲突的本质依赖冲突是每个开发者在复现GitHub项目时几乎必然遇到的"拦路虎"。当项目A依赖库X的1.0版本,而项目B依赖库X的2.0版本时,系统究竟该加载哪个版本&…

2026/9/9 18:35:10

GEO的ROI怎么算?从被AI推荐到品牌搜索量增长的完整指标链路

做GEO项目的人,迟早会碰到同一个尴尬场景:内容也改了、结构化也做了、发布节奏也稳定了,阶段性汇报时老板一句"ROI怎么算",整个会议室安静三秒。不是你不会做事,而是你手里那套衡量工具还是SEO时代的——它擅…

2026/9/9 18:35:10

STM32F407驱动OV7670摄像头:DCMI+DMA配置与踩坑总结

简介:基于STM32F407的USB摄像头驱动实现工程,面向嵌入式开发者和电子竞赛参赛者,演示如何利用芯片内置USB OTG接口与UVC协议完成摄像头枚举、视频流采集与图像数据处理,适合以此为起点学习USB通信和嵌入式视觉开发。包内共159个文…

2026/9/9 18:35:10

跨境卖家售后分层赔付标准实操指南

1. 售后赔付不是越严越好,而是越分层越好 先聊个让我印象很深的案例。去年有个做家居类目的卖家朋友找我喝茶,说旺季冲了一波销量,单量翻了三倍,结果毛利反而比淡季还低。一查后台,售后成本占据了将近20%的销售额&…

2026/9/9 18:30:10

5分钟搞懂 Nuclear:免费搜歌听歌的完整指南

5分钟搞懂 Nuclear:免费搜歌听歌的完整指南 【免费下载链接】nuclear Streaming music player that finds free music for you 项目地址: https://gitcode.com/GitHub_Trending/nu/nuclear Nuclear 是一个免费开源的流媒体音乐播放器,它不自带任何…

2026/9/9 13:11:35

超人会飞不算本事:系统稳定依赖清晰规则与边界设计

开头先不绕弯子。“#斯坦李吐槽dc 所以超人是无缘无故会飞的嘛哈哈哈哈哈哈哈锤哥真是技术人才啊!#雷神 #复联”这类调侃式短标题,第一波冲击力在于它把两个宇宙的角色塞进同一个吐槽箱里,但细想一下就能发现,它真正碰到的根本不是…

2026/9/8 7:15:15

超人VS蜘蛛侠:拆解超级IP的影响力与传播方法论

把“蜘蛛侠 vs 超人”放在 CSDN 上聊,可能很多人第一反应是走错片场了。但如果把这两个角色看成“两个持续运营了 80 多年的文化产品”,你会发现,这场比较本质上是两个不同 IP 策略的长期结果对比:超人赢在定义了整个超级英雄题材…

2026/9/9 16:31:09

基于CNN的调制信号识别:MATLAB实现时频图分类实战

简介:本资源是一套面向通信工程与信号处理方向学习者、研究者的深度学习实践方案,聚焦调制信号自动检测与识别这一典型无线通信任务,解决传统方法依赖人工特征、低信噪比下性能下降等痛点。压缩包共12个文件(10.73MB)&…

2026/9/9 0:00:48

MHS模型硬件标准:让大模型像调用软件一样控制物理设备

让Claude真正看着显微镜说“这个细胞形态不太对”,或者让大模型自己调一版机械臂的运动轨迹,这事儿听上去已经很接近科幻片了。但你真上手试一次就会发现,模型不缺智商,缺的是一个能插进显微镜、机械臂、激光控制器里的“通用插座…

2026/9/9 0:00:48

AI五大核心方向详解:从机器学习到大模型,零基础转行选哪条?

会有人告诉我,他想转行学AI,但打开招聘网站一看直接傻眼:机器学习、深度学习、自然语言处理、计算机视觉、大模型应用……满屏都是这些词,好像每个都会一点,又好像每个都离自己很远。还有人上来就问“学Python还是学Ja…

2026/9/9 0:00:49

从50行最小循环到生产级AI引擎:工程化改造全解析

直接说干货。这一章我写的不是那种"hello world跑通某个模型"的教程,而是把AI引擎当做一个真正要上线、要被人调用、要扛流量的系统来聊。从最初只有50行的最小循环,到能够承载生产流量的AI引擎,中间差的不是代码量,而是…

2026/9/7 16:23:03

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/7 22:46:00

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/9 10:21:54

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码