首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏Spring Boot学习之路

    五、ArkTS 常用组件-文本显示 (TextSpan)

    https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V13/arkts-common-compo6nents-text-display-V13

    87700编辑于 2025-01-13
  • 来自专栏阿策小和尚

    【Flutter 专题】32 Flutter 32: 图解 TextPainter 与 TextSpan 小尝试

    大家在学习 Flutter 时一定会用过 Text,而对于一些复杂文本的处理可能会选择 RichText,再进一步,使用 RichText 就一定要用 TextSpan ,和尚本以为可以做为一个小知识点进行简单学习 ,但是随着深入尝试发现 TextSpan 涉及东西很多,很值得研究,因此单独整理一篇小博文。 RichText 富文本核心即 TextSpan,而 TextSpan 结构很像 Android 中的 ViewGroup 树型结构。 ? ? ), children: <TextSpan>[ TextSpan( text: '红色', 中 style 的 height 属性,在 TextSpan 中此值设置行高,是以文字基准线为最小距离; TextPainter( text: TextSpan( text:

    2.3K41发布于 2019-08-12
  • 来自专栏若城技术专栏

    HarmonyOS4.0 TextSpan组件详解

    注意在使用textOverflow 属性时需要使用 maxLines 属性来设定文本显示行数

    74710编辑于 2024-03-24
  • 来自专栏Flutter

    Flutter Widgets 之 RichText

    RichText( text: TextSpan( style: DefaultTextStyle.of(context).style, children : <InlineSpan>[ TextSpan(text: '老孟',style: TextStyle(color: Colors.red)), TextSpan (text: ','), TextSpan(text: '一个有态度的程序员'), ]), ) RichText 组件的text属性是TextSpanTextSpan中的style样式需要设置属性,不设置无法显示文字,一般设置应用程序的默认字体样式DefaultTextStyle.of(context).style,在子组件其中一个TextSpan (text: '登陆即视为同意'), TextSpan( text: '《xxx服务协议》', style: TextStyle

    1.3K00发布于 2020-03-01
  • 来自专栏Android知识点总结

    Flutter 文字解读 5 | RichText 富文本的使用 (上)

    ---->[Text 源码]---- final InlineSpan textSpan; const Text.rich( this.textSpan, { //... 如下面的的需求,我们需要使用 TextSpan ,在一个 TextSpan 中可以传入 List ,从而可以得到一个树状的结构。实现代码如下: ? (children: [ TextSpan(text: '我已同意 ', style: defaultStyle), TextSpan(text: '服务条款', style: ), TextSpan(text: ' 。' ,), TextSpan(text: '隐私政策', style: linkStyle, recognizer: _tapPolicy), TextSpan(text: ' 。'

    8.2K10发布于 2021-01-26
  • 来自专栏Android群英传

    真•文本环绕问题的探究和分享

    textSpan; @override void initState() { super.initState(); textSpan = TextSpan( style TextSpan结构分析 假设一个嵌套的TextSpan如下: Dart final t = TextSpan( text: "1", children: [ TextSpan(text: "2", children: [ TextSpan(text: "3"), ]), TextSpan(text: "4" TextSpan(text: "7"), ]), TextSpan(text: "8"), ]), TextSpan(text: ,记住这一点,后文给出压平代码; 深Copy TextSpan: 由于TextSpan是不可变的且嵌套下去的,我们先定义一个辅助方法,根据现有的TextSpan深度Copy复制一个新的TextSpan的代码

    74220编辑于 2023-10-25
  • 来自专栏历史专栏

    【愚公系列】2023年12月 HarmonyOS教学课程 018-ArkUI组件(TextSpan

    在HarmonyOS中,Text/Span组件是文本控件中的一个关键部分。Text控件可以用来显示文本内容,而Span只能作为Text组件的子组件显示文本内容。

    23310编辑于 2025-06-02
  • 来自专栏Android先生

    Flutter组件学习(一)—— Text组件

    = null), 14 textSpan = null, 15 super(key: key); 16 17 const Text.rich(this.textSpan, { this.overflow, 25 this.textScaleFactor, 26 this.maxLines, 27 this.semanticsLabel, 28 }): assert(textSpan : const EdgeInsets.fromLTRB(0.0, 10.0, 0.0, 0.0), 117 child: Text.rich( 118 new TextSpan fontSize: 13, 123 decoration: TextDecoration.none), 124 children: <TextSpan >[ 125 new TextSpan( 126 text: '拼接1', 127

    1.8K20发布于 2018-12-19
  • Flutter那些事-展示型组件篇

    (text:"Hello",children:[TextSpan(text:"Flutter",style:TextStyle(color:Colors.green)),TextSpan(text:"! 这时需要用到TextSpan和Text.rich构造函数。TextSpan代表一个具有独立样式的文本“片段”。多个TextSpan可以组合在一起,形成复杂的富文本结构。text:显示的文本。 children:一个TextSpan列表,用于嵌套更多的片段。recognizer:为这个片段添加手势识别,比如点击事件。示例:以下代码创建了一个带有可点击链接的富文本。 (text:'访问',children:<TextSpan>[TextSpan(text:'Flutter官网',style:constTextStyle(color:Colors.blue),recognizer :TapGestureRecognizer()..onTap=(){//处理点击事件,例如打开网页print('链接被点击了');},),TextSpan(text:'了解更多。')

    10720编辑于 2026-02-28
  • 来自专栏Flutter

    Flutter 实现隐私政策

    先来看下登录/注册界面通常展示的《用户协议》和《隐私政策》,代码实现如下: Text.rich( TextSpan( text: '登录即代表同意并阅读', style: TextStyle (fontSize: 14, color: Color(0xFF999999)), children: [ TextSpan( text: '《用户协议》 (text: '和'), TextSpan( text: '《隐私政策》', style: TextStyle(color: Theme.of(context _list.map((e) { if (widget.keys.contains(e)) { return TextSpan( call(e); }, ); } else { return TextSpan

    5.3K31发布于 2021-08-06
  • 来自专栏移动开发之家

    Flutter 中的图文混排与原理解析

    如下代码所示,通过 Text.rich 接入 TextSpan 和 WidgetSpan 就可以快速实现图文混排的需求,并且可以看出 WidgetSpan 不止支持图片控件,它可以接入任何你需要的 Widget Text.rich(TextSpan( children: <InlineSpan>[ TextSpan(text: 'Flutter is'), WidgetSpan 在前面的使用中,我们首先是传入了一个 TextSpan 给 RichText ,并在 TextSpan 的 children 中拼接我们需要的内容,那就从 RichText 开始挖掘其中的原理。 对于 InlineSpan 系列我们主要关注两个方法:visitChildren 和 build 方法,它的子类 TextSpan 和 WidgetSpan 都对这两个方法有自己对应的实现。 是不是有点晕,结合下图所示,总结起来其实就是: RichText 中传入 TextSpan , 在 TextSpan 的 children 中使用 WidgetSpan ,WidgetSpan 里的

    3.4K20发布于 2020-03-20
  • 来自专栏个人路线

    关于Flutter中的RichText组件,你了解多少?

    今天给大家带来的是RichText组件,他里面有个text属性,RichText显示的文本内容是TextSpan类型,他不是一个简单的string,而是TextSpan类型,TextSpan类型是一个可以无限传递的树形结构 甚至通过children属性,传入一个TextSpan列表作为子节点,已实现叠加和嵌套文字样式的功能。 然后大家有没有疑问,关于红色的这个是如何设置的,这个我可以称呼它为碰撞检测,以便完成TextSpan树中某一片段的检测。 (text: "我已阅读"), TextSpan( style: const TextStyle( color (text: "和"), TextSpan( style: const TextStyle( color:

    1.2K30编辑于 2022-06-24
  • 来自专栏Flutter

    【Flutter实战】文本组件及五大案例

    TextStyle(color: Colors.blue,fontSize: 20),), RichText RichText的属性和Text基本一样,使用如下: RichText( text: TextSpan ( style: DefaultTextStyle.of(context).style, children: <InlineSpan>[ TextSpan(text : '老孟', style: TextStyle(color: Colors.red)), TextSpan(text: ','), TextSpan(text: '专注分享 带前后置标签的文本 RichText( text: TextSpan( style: DefaultTextStyle.of(context).style, children : '泡沫灭火器可用于带电灭火'), ]), ) “服务协议” 通常在登录页面的底部会出现登录即代表同意并阅读 《服务协议》,其中《服务协议》为蓝色且可点击: Text.rich( TextSpan

    8.1K10发布于 2020-09-11
  • 来自专栏Android知识点总结

    Flutter小课堂:Text知多少

    呢 4.TextSpan 首先它不是一个Widget,其次它可以作为Text.rich()的入参 TextSpan的强大之处在于你可以在一行文字中使用很多样式,甚至添加别的控件 4.1:TextSpan 源码中的示例 看源码时,源码中给了一个小例子蛮好的,这里讲一下 可以看出,一行文字中可以有多种样式,这就是TextSpan的基本用法 var span=TextSpan( text: 'Hello ', // default text style children: <TextSpan>[ TextSpan(text: ' beautiful ', style: TextStyle(fontStyle : FontStyle.italic)), TextSpan(text: 'world', style: TextStyle(fontWeight: FontWeight.bold)), ] 这里匆匆的文章就不贴了 colorfulText(String str,{double fontSize=14}) { var spans= <TextSpan>[]; for(var i=

    73820发布于 2020-04-30
  • 来自专栏阿策小和尚

    【Flutter 专题】137 图解自定义 ACEFoldTextView 折叠文本

    一般都需要通过 TextPainter 等方式获取;和尚尝试了两种方式进行判断; 2.1 TextPainter.didExceedMaxLines 和尚之前也有简单了解过 TextPainter 与 TextSpan didExceedMaxLines 判断文本内容是否已经超行;和尚之后会对 TextPainter 再深入研究一下; _checkOverMaxLines01(maxLines, maxWidth) { final textSpan = TextSpan(text: _textStr, style: widget.textStyle); final textPainter = TextPainter(text: textSpan TextPainter 必须设置好 textDirection 文本对齐方式,以及在 layout 布局之后才可以获取; _checkOverMaxLines02(maxWidth) { final textSpan = TextSpan(text: _textStr, style: widget.textStyle); final textPainter = TextPainter(text: textSpan

    1.6K20发布于 2021-10-12
  • 来自专栏BennuCTech

    Flutter中如何设置全局字体

    TextSpan中字体未生效 TextSpan可以用来处理图文混合的需求。 比如前面一个图片标签,后面是文字,但是文字第二行还要从图片最左端开始,即环绕图片,这种时候就需要TextSpan+WidgetSpan配合只用即可。 但是在flutter web中(其他平台未测),通过上面设置全局字体后,发现TextSpan中的字体并未生效,还是系统字体。 说明TextSpan稍微特殊一些,我们知道Text的源码中style实际上做了一步merge操作,merge了默认的style(defaultTextStyle),如下: Widget build(BuildContext 但是在TextSpan的源码中,发现并没有这一步操作,所以设置的全局字体对它不起作用。 所以使用TextSpan的地方如果需要则必须单独设置字体。

    3.9K20编辑于 2022-11-11
  • 来自专栏日常技术分享

    Flutter RichText简单使用

    ), alignment: Alignment.bottomCenter, child: RichText( text: TextSpan ColorsUtil.hexStringColor('111E36'), ), children: [ TextSpan ColorsUtil.hexStringColor('111E36'), ), ), TextSpan

    57530发布于 2021-06-11
  • 来自专栏Google Dart

    Flutte部件目录-基本部件(二) 顶

    使用新的TextSpan.rich构造函数,还可以使用TextSpan创建Text部件,以显示使用多种样式的文本(例如,带有粗体字的段落)。 要使文本的各个部分交互,请使用RichText并将TapGestureRecognizer指定为文本的相关部分TextSpan.recognizer。 const Text.rich(TextSpan textSpan, { Key key, TextStyle style, TextAlign textAlign, TextDirection  textDirection, bool softWrap, TextOverflow overflow, double textScaleFactor, int maxLines }) 使用TextSpan final textSpan → TextSpan 要作为TextSpan显示的文本. [...]

    5.5K20发布于 2018-08-14
  • 来自专栏Android知识点总结

    算法遇记 | 字符串段拆插问题 - 富文本

    先说一下场景,如下所示: 已知字符串 src 匹配段列表:matches ---- 这样,在 Flutter 中可以通过对 matches 的遍历,形成富文本段,进行展示,效果如下: TextSpan style: style0)); // 匹配段 String matchStr = src.substring(match[0], match[1]+1); span.add(TextSpan = src.length - 1) { span.add(TextSpan(text: src.substring(cursor), style: style0)); } return TextSpan(children: span); } ---- 2. 下面是完整的 formSpan 方法,感兴趣的可以自己试一下: TextSpan formSpan() { List<List<int>> matches = [[1, 2], [5, 8], [14

    57720编辑于 2022-12-15
  • 来自专栏HelloCode开发者学习平台

    Flutter——实现微信搜索框

    ]; List<String> strs = name.split(_searchStr); print('$name:$strs'); return RichText(text: TextSpan TextStyle _selectStyle = const TextStyle( color: Colors.green, fontSize: 16 ); List<TextSpan i++){ String indexStr = strs[i]; if(indexStr == ''&& i < strs.length - 1){ spans.add(TextSpan )); if(i< strs.length -1){ spans.add(TextSpan(text: _searchStr,style: _selectStyle)); } } } return RichText(text: TextSpan(children: spans)); } (滑动显示更多) 后面会上传下这个demo到github

    2.4K20编辑于 2022-01-14
领券