【ArkUI 文本展示系列】六:控制文本的交互行为(二)Span嵌套控制

【鸿蒙ArkUI实战开发】基于webView的嵌套滚动 实现方法:通过web组件的type属性设置为1,即全量展开且嵌套滚动场景,并且layoutMode接口用来设置web页面是否全量展开,如需全量展开则设置参数为WebLayoutMode.FIT_CONTENT,nestedScroll接口用来设置web组件与上下层组件的嵌套滚动关系,推荐使用子组件优先模式(NestedScrollMode.SELF_FIRST)。整体实现效果为:页面整体为一个Scroll,Scroll中嵌套一个Tabs组件,Tabs里有多个web组件可以实现首页效果。 阅读详情

Span支持的通用事件只有点击事件onClick和悬浮事件onHover。

这里以用场景“点击url在自定义浏览器中打开”为例,说明Span如何控制交互行为。

import { common, Want } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit';

@Entry
@Component
struct demo {
  @State text: string = '这事一段文本www.example.com这是另一段文本www.example.cn'
  @State strArr: Array<string> = []
  @State urlArr: Array<string> = []

  aboutToAppear(): void {
    this.splitUrls(this.text);
  }

  // 分割字符串,找出其中的url
  splitUrls(str: string) {
    // 使用正则表达式匹配URL(支持http/https协议或www开头的地址)
    let pattern = /(https?:\/\/|www\.)[\w.-]+\.[\w.-]+[\w\/?#=.-]*/g;
    let urls = str.match(pattern) as Array<string>
    if (urls && urls.length > 0) {
      this.strArr = this.splitString(str, urls)
      this.urlArr = urls
    }
  }

  // 将所有URL作为分隔符,将原始文本分割成文本片段数组
  splitString(str: string, separators: Array<string>) {
    return str.split(new RegExp(separators.join('|'), 'g'))
  }

  // 跳转到应用中打开链接
  openInBrowser(url: string) {
    // 如果URL不以http开头,需要添加前缀
    const fullUrl = url.startsWith('http') ? url : `https://${url}`;
    const want: Want = {
      uri: fullUrl,
      action: 'ohos.want.action.viewData' // 系统标准动作,用于打开链接,可以替换成其他应用
    };
    const context: common.UIAbilityContext = this.getUIContext().getHostContext()! as common.UIAbilityContext
    context.startAbility(want).then(() => {
      console.info('跳转浏览器成功');
    })
      .catch((err: BusinessError) => {
        console.error(`跳转失败:  ${err.message}`)
      });
  }

  build() {
    Column({ space: 20 }) {
      Text() {
        ForEach(this.strArr, (str: string, index: number) => {
          Span(str)
          if (this.urlArr.length > index) {
            Span(this.urlArr[index])
              .fontColor(Color.Blue)
              .onClick(() => {
                this.openInBrowser(this.urlArr[index])
              })
          }
        })
      }
    }
    .padding(20)
  }
}

读者可以在手机中尝试,点击url之后会跳转到浏览器中打开。如果需要跳转到其他应用当中,需要参考startAbility文档,更改want的入参。

HarmonyOS 开发实践 —— 基于webview的嵌套滚动及与ArkUI组件的联动 在以上dom树的示例中,可以看出来父组件List中有两个listItem子组件和两个封装的web组件,封装的类里面是有一个Stack父组件以及web和column两个子组件,分别加载web页面和展开更多的文本。给web页面一个最小高度,这样就可实现以上List列表的效果,当用户想查看详情的时候,就可以点击展开更多,通过这个点击事件将web加载时拿到的页面高度在变量里取出来,赋值到web组件的高度上,这样就可以实现点击展开详情页的效果,滑动到最下面后再点击收起把web的高度恢复到最小值即可。 阅读详情

相关推荐

HarmonyOS 实战开发 —— 基于webview的嵌套滚动及与ArkUI组件的联动

在以上dom树的示例中,可以看出来父组件List中有两个listItem子组件和两个封装的web组件,封装的类里面是有一个Stack父组件以及web和column两个子组件,分别加载web页面和展开更多的文本。给web页面一个最小高度,这样就可实现以上List列表的效果,当用户想查看详情的时候,就可以点击展开更多,通过这个点击事件将web加载时拿到的页面高度在变量里取出来,赋值到web组件的高度上,这样就可以实现点击展开详情页的效果,滑动到最下面后再点击收起把web的高度恢复到最小值即可。

CTrup的博客 1165

span标签的使用场景

span标签的使用笔记,如何使用span标签的场景

奶厂小程的博客 6572

HarmonyOS 开发实战——ArkUI组件嵌套滚动优化实践

使用Scroll嵌套Web和List组件实现。Scroll作为父组件响应滚动手势,Web和List组件禁用滚动手势,滚动偏移量由父组件Scroll给Web和List组件派发。2)如果List滚动到顶部,Scroll没有滚动到顶部,则Scroll自身滚动,不给Web和List派发滚动偏移量。2)如果web滚动到底部,Scroll没有滚动到底部,则Scroll自身滚动,不给Web和List派发滚动偏移量。1)如果web没有滚动到底部,则Scroll将滚动偏移量派发给web,Scroll组件本身不滚动。

CTrup的博客 752

【ArkUI 文本展示系列】 〇:ArkUI Text组件全面解析:从基础展示到复杂样式实践

本文系统介绍了ArkUI框架中的Text组件及其相关功能。第一部分概述了Text组件的基础概念、Span组件的差异化样式设置以及属性字符串的高级功能。第二部分详细解析了Text组件的三大核心能力:字体样式、文本布局风格和自适应布局,以及文本交互行为的控制方法。通过丰富的示例,文章由浅入深地展示了如何实现从基础文本展示到复杂交互效果的全过程,为开发者提供了全面的ArkUI文本开发指南。

Alan_rust的博客 2128

HarmonyOS开发(ArkUI简单使用)

Componentbuild(){//组件UI描述@Componentbuild(){//使用组件Com({title:'标题'})//UI描述@Componentbuild(){@Component//UI描述build(){

2301_79568779的博客 2260

Silvaco TCAD仿真例库——肖特基二极管反向击穿特性(案例)

本文详细解析了使用Silvaco TCAD仿真例库进行肖特基二极管反向击穿特性分析的完整案例。通过构建包含浮空P型保护环的平面结构,重点阐述了针对雪崩击穿仿真的关键步骤,包括高精度网格划分、碰撞电离模型(impact selb)的启用以及反向电压的精细扫描策略。文章深入探讨了漂移区掺杂浓度、保护环设计等参数对击穿电压的影响,并提供了实用的调试心得,旨在帮助工程师精准预测和优化功率肖特基二极管的反向耐压能力。

fire9的博客 724

ArkUI中Span:Text与RichEditor的得力助手

Span 组件作为 ArkUI 中 Text 和 RichEditor 组件的得力助手,在文本显示和编辑领域展现出了强大的功能和独特的价值。它不仅能够让我们在展示多样信息时突出重点,还能通过丰富的样式设置实现文本的个性化展示,以及借助点击事件为文本增添互动性,在 RichEditor 中更是进一步拓展了其应用场景,提升了用户的编辑和交互体验。随着 HarmonyOS 生态的不断发展和壮大,相信 Span 组件也将不断演进和完善,为开发者提供更多、更强大的功能。

大雨淅淅的博客 1036

FDTD超表面仿真详细教程,几何相位,共振相位,传播相位

FDTD的超表面主要几何相位型(PB型)和共振型两种类型,其中PB型每个cell中的纳米棒的长宽相同,旋转角度不同,共振型长宽不同,旋转角度相同。本博文中以最常见的长方形纳米棒为例,用FDTD演示两种超表面实现的聚焦透镜的功能,包含详细步骤,其他形状,材料的超表面可自行尝试。

wuyuerhhg的博客 3万+

HarmonyOS ArkUI 文本组件全总结:文本显示 + 文本输入区分与实战

只读文本展示组件(Text/Span)可交互文本输入组件(TextInput/TextArea/Search)。二者定位完全隔离,本篇一次性梳理清楚区别、特性与适用场景,方便开发选型。不要混用:Text/Span 无法接收用户输入;输入框组件不能用来展示静态文字,会增加性能开销。Span 限制:不能脱离 Text 单独写在 Row/Column 中,编译报错。富文本区分:简单多色文字用 Span;复杂图文混排使用 RichEditor,不要强行嵌套多层 Span。

2401_87235428的博客 216

ROS2 DDS中间件(图文并茂+超详细)

DDS 的目标场景在端上,致力于使端上的应用可以更容易的进行通信,由于它的完全分布式架构,可以方便的将端上的应用拆分为多进程架构,从而提高端的容错能力。从产品定位角度来讲,它和 Chromium 中的 mojo 都是端上的通信中间件,只不过 mojo 不强调分布式,内部集成了更多的特定于端上的机制,比如句柄的传输,消息的缓存等。但由于 mojo 生于 Chromium,目前官方并没有把它独立出来,所以用起来比较不方便。而 DDS 或许可以在简单的场景下作为 mojo 的替代品。

weixin_39939185的博客 5284

YOLO十年演进:从CNN到Transformer再到MoE,我看懂了2026年目标检测的落地风向标

技术永远是为业务服务的,能解决真实问题的技术,才是有价值的。YOLO的十年演进,从CNN到Transformer再到MoE,从来都不是学术上的炫技,而是一步一步解决工业落地的痛点:从让实时检测成为可能,到解决复杂场景的漏检误检,再到打破精度和算力的死局,每一步都踩在了工业落地的真实需求上。很多新入行的朋友,总喜欢追新,今天换Transformer,明天堆MoE,觉得模型越新、参数越大,就越厉害。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 748

HarmonyOS ArkUI 滚动组件实战:Scroller 与嵌套滑动完全指南

本文详细介绍了HarmonyOS ArkUI开发中的滚动交互实现方法,重点讲解了Scroller控制器和nestedScroll嵌套滑动模式的应用。文章通过京东秒杀等实际案例,展示了从基础滚动控制到复杂布局实现的完整开发流程,包括Scroller的创建绑定、常用API、返回顶部按钮实现,以及嵌套滚动模式下解决父子组件滚动冲突的技巧。特别针对电商类应用常见的"顶部广告+标题+列表"布局,提供了分组吸顶等进阶功能的实现方案。文章还总结了性能优化建议和常见问题解决方法,帮助开发者掌握滚动交互的

xiaokangzhao_的博客 1464

4.4 直流无刷电机(BLDC):控制器硬件设计

摘要 本文详细阐述了直流无刷电机(BLDC)控制器的硬件设计要点。控制器硬件主要包括微处理器单元、功率驱动模块、信号检测电路、通信接口和电源管理模块。在微处理器选型方面,分析了ARM Cortex-M系列、DSP等架构的适用场景,并对比了不同处理器的性能参数。功率驱动模块设计重点包括栅极驱动电路、逆变桥热管理和电流保护机制。信号检测部分介绍了位置传感器接口和模拟信号调理技术。此外,还讨论了通信接口设计、电源管理方案以及硬件布局与EMC设计规范。最后强调了硬件测试验证的重要性,包括故障注入测试等验证方法。整体

技术工作者 185

ArkUI GridCol span/offset/order 3大属性详解:构建复杂新闻Feed流界面

本文深入解析ArkUI GridCol组件的span、offset和order三大属性,教你如何利用这些特性构建灵活、响应式的新闻Feed流界面。通过实战案例展示如何在HarmonyOS应用中实现复杂栅格布局,提升移动端内容展示效果与用户体验。

banglvfei0870的博客 354

Visual Studio 2022+Qt6.5.3安装教程+环境配置+创建Qt项目+乱码插件+运行很完美(16岁孩子也能看懂)

Visual Studio 2022+Qt6.5.3安装教程+环境配置+创建Qt项目+乱码插件+运行很完美(16岁孩子也能看懂)

Qt历险记,专注Qt技术,三年医疗设备研发经验,1年机器视觉研发经验,半年柔性传感研发经验。 1190

代谢组数据分析(十九):随机森林构建代谢组预后模型

建立胃癌(GC)预后模型时,从队列3中的181名患者中,使用右删失结果数据进行了随机分层抽样,分为训练数据集(n = 121)和测试数据集(n = 60)。训练了一个包含1000棵树的随机生存森林(RSF)模型,根据它们基于排列的特征重要性来选择突出的特征。通过再次训练随机生存模型,并选取28种代谢物,建立了显示出色预测能力(AUROC = 0.832,95% CI:0.697-0.951)的最佳模型,用于预测测试数据集中GC患者的生存结果。

专注生信领域 1713

【鸿蒙ArkUI路由/导航系列】〇:ArkUI Navigation组件全面解析:从基础导航到高级路由的实践

【鸿蒙ArkUI路由/导航系列】一:ArkUI路由原理简介,认识Navigation组件详细阐述了Navigation作为导航容器的角色,支持全局及局部导航,并具有单栏(Stack)、分栏(Split)及自适应(Auto)三种显示模式。Navigation组件由导航栏(NavBar)和子页(NavDestination)构成,通过NavPathStack管理子页切换。文章还介绍了Navigation的高级特性,如自定义转场动画、路由拦截及生命周期管理,为开发者提供了全面的Navigation组件使用指南。

Alan_rust的博客 2299

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Text 组件完全指南的 ArkUI 实践:把页面结构、状态与反馈做扎实

回过头看,Text并不复杂,但它的能力是分层的:最底层是"显示字符串",往上是"好看"(字号字重颜色间距),再往上是"有结构"(Span 富文本),然后是"有反应"(状态与事件),最后是"排得下"(布局约束与截断)。标题、标签 → 基础用法 + 样式;价格、热度、说明 → Span 富文本;计数、状态提示 → 交互与状态;卡片标题、列表项 → 布局与截断。把这几层吃透,你在 ArkUI 里写文字类 UI 基本不会再卡壳。可编辑富文本:研究RichEditor,它是Text。

autumn2005的博客 429

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

鸿蒙ArkUI图文混排全攻略:Text+Span与ImageSpan实战避坑指南

在HarmonyOS应用开发中,富文本和图文混排是资讯详情、商品介绍、聊天消息等场景的常见需求。ArkUI作为鸿蒙原生的声明式UI框架,提供了Text、Span、ImageSpan、RichText等多层级组件体系,能够以组件嵌套的方式实现文字、图片、表情、链接的混合排版。理解Span子组件的排版原理、基线对齐与行高控制,是保证混排视觉效果的关键。ImageSpan支持本地与网络图片插入,配合PixelMap缓存机制可提升滚动性能。RichText适合解析后端下发的HTML片段,但与Text+Span体系各

weixin_36369848的博客 31

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

​基于文本的ArkUI设计​

需要注意的是,使用“Ellipsis”时,通常需要搭配“.maxLines()”方法一同使用,以指定文本最多显示的行数。这时,为了保持界面的美观和功能的完整性,我们需要对溢出的文本进行适当的处理。而像Column和Row这样的容器组件则没有此限制,可以根据需要在界面中使用多个,以灵活实现不同的布局需求。Previewer 是 DevEco Studio 提供的一个非常直观的工具,它能够根据代码的变化动态更新界面效果,帮助我们快速验证布局和样式的设计。这样的容器组件,它们的写法如下图所示。

WeiSeries Computer Science and Technology 379

harmony 鸿蒙ArkUI动画/交互事件开发常见问题(ArkTS)

问题现象一个页面底部默认显示自定义组件A,点击自定义组件A,则A消失,自定义组件B从底部出现;点击自定义组件B,则组件B消失,A从底部出现。这个效果要如何实现?解决措施可以使用transition产生组件转场动画,其参数type用来设置组件变化场景,包括新增和删除;参数translate用来设置转场时的平移效果。注意transition需要配合animateTo才能生效,动效时长、曲线、延时跟随animateTo中的配置。代码示例@Entry@Componentbuild() {if (!

m0_68271787的博客 1536

【鸿蒙ArkUI路由/导航系列】十:Navigation嵌套开发

本文介绍了Navigation框架的嵌套开发应用,通过示例演示了如何实现多级导航功能。外层Navigation负责主应用模块间跳转(如购物、外卖、打车小程序),每个子模块内部又嵌套独立Navigation处理自身业务路由。文章详细展示了代码实现,包括主页导航、各小程序模块的内部导航控制器配置,以及子页面间的跳转逻辑。这种设计实现了业务逻辑分层管理,主模块负责宏观路由,子模块自行处理内部页面流转,适用于复杂应用场景。案例提供了完整的代码结构,展示了多级导航栈的构建与交互方式。

Alan_rust的博客 375

HarmonyOs NEXT 鸿蒙 ArkUI 这篇就够了

HarmonyOS NEXT ArkUI组件的使用 这篇就够了

制定持续可量化的目标,不断坚持。 2743

ArkUI GridRow/GridCol 性能优化 3 要点:避免嵌套过深与 LazyForEach 实战

本文深入探讨了ArkUI GridRow/GridCol在鸿蒙应用开发中的性能优化策略,重点分析了栅格布局嵌套过深的性能影响及LazyForEach虚拟化渲染的实战应用。通过三级嵌套法则、组件拆分和配置对象常量提取等技巧,有效解决滚动卡顿和内存占用问题,提升HarmonyOS应用流畅度。

weixin_33739646的博客 519

鸿蒙0基础学习【Web组件嵌套滚动】ArkUI

Web组件嵌套滚动可通过两种方案实现:1) 使用nestedScroll属性设置父/子组件优先滚动模式,适用于简单联动场景;2) 通过父组件统一派发滚动偏移量,适用于需自定义控制的复杂场景。方案1通过属性设置即可实现Web与父组件(如Scroll)的上下滚动联动。方案2需手动控制各组件滚动行为,包括禁用Web原生手势、检测边界条件、精确派发偏移量等,适用于需精细控制的多组件嵌套滚动场景。两种方案均能实现Web组件与ArkUI可滚动容器的嵌套滚动,开发者可根据具体需求选择实现方式。

zhenggaoxiao232的博客 780
上一篇: 【ArkUI 文本展示系列】五:控制文本的交互行为(一)基础交互控制
下一篇: 【ArkUI 文本展示系列】七:属性字符串——从基础样式到高级排版
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值