TextView使用Spannable设置复合文本

富文本编辑器设置字符颜色和背景颜色 这部分的功能比较简单,再次仅做一个记录。 阅读详情

Spannable 对文字的编辑减少TextView的拼接并且达到改变一串字符中的部分文字的字体颜色,背景颜色,字体大小,样式 增加文字的超链接。

如 把部分字体改成红色:

SpannableString amountS=new SpannableString(amount);

    
amountS.setSpan(new ForegroundColorSpan(Color.RED), amount.indexOf(orderInfo.PayMoney+""), amount.indexOf("元")+1, Spannable.SPAN_EXCLUSIVE_INCLUSIVE);

具体主要介绍setSpan()中的what和flags参数:

 setSpan(Object what, int start, int end, int flags)

1.Object what主要是对文字的一些属性的设置,大小,颜色,已经文字的背景颜色:

BackgroundColorSpan, ClickableSpan, ForegroundColorSpan, MaskFilterSpan, MetricAffectingSpan, 

RasterizerSpan, StrikethroughSpan, SuggestionSpan, UnderlineSpan

详细说明:

BackgroundColorSpan:背景颜色
ClickableSpan    设置可点击的部分文字
ForegroundColorSpan  改变文字字体的颜色
MaskFilterSpan(MaskFilter filter) 修饰效果,如模糊(BlurMaskFilter)、浮雕(EmbossMaskFilter)
MetricAffectingSpan
  直接子类:  AbsoluteSizeSpan, LocaleSpan, RelativeSizeSpan, ReplacementSpan, ScaleXSpan, StyleSpan, SubscriptSpan, SuperscriptSpan, TextAppearanceSpan, TypefaceSpan
  间接子类:  DynamicDrawableSpan, ImageSpan
  
RasterizerSpan 光栅效果
StrikethroughSpan  中划线 (删除线)
SuggestionSpan 占位符
UnderlineSpan 下划线
ImageSpan 图片包裹,可以在一段文字中添加一个图片
SubscriptSpan 下标- 数学公式 用到
SuperscriptSpan 上标-数学公式会用到
ScaleXSpan(3.8f) 基于x轴的缩放
StyleSpan(Typeface.BOLD_ITALIC)字体样式:粗体、斜体等
TextAppearanceSpan(this, android.R.style.TextAppearance_Medium) 文本外貌(包括字体、大小、样式和颜色)
TypefaceSpan("monospace")文本字体
URLSpan("http://orgcent.com") 文本超链接 

2.flags:对一段文字设置一些标识

 如:  Spannable.SPAN_EXCLUSIVE_INCLUSIVE

   SPAN_COMPOSING:临时申请流行的一个输入法的构成的文本信息  标示:该段文字可以被删除或者替换
SPAN_EXCLUSIVE_EXCLUSIVE:包括内容不会扩大,只会包含起点和终点,长度绝对不能为0,如果被删除的所有它们涵盖文字也会自动从缓冲区中删除。
        SPAN_EXCLUSIVE_INCLUSIVE:可以扩大的跨度,非0,包括文字插入他们的终点,而不是在他们的出发点,如果为0的时候就像一个点。
SPAN_INCLUSIVE_EXCLUSIVE:可以扩大的跨度,非0,包括文字插入他们的出发点,而不是在他们的终点,如果为0的时候就像一个点
SPAN_INCLUSIVE_INCLUSIVE:跨度类型的扩大包括文本插入他们的起点或终点。
SPAN_INTERMEDIATE:标志将被设置为中间跨度的变化,这意味着有保证是另一个变化。通常情况下,它是用于选择自动使用与第一偏移量被更新时选择设置
SPAN_MARK_MARK:像文本标记长度为0的跨度与SPAN_MARK_MARK型:他们仍然在原来的偏移该偏移处插入文本时
SPAN_MARK_POINT:SPAN_MARK_POINT==SPAN_INCLUSIVE_INCLUSIVE
SPAN_PARAGRAPH :必须是它的端点的缓冲区或后立即\ n字符的开始或结束,而如果它被删除,锚,端点被拉到下一个的\ n \ñ如下中的缓冲区(或结束缓冲区)。 即以换行符为起始点和终点
SPAN_POINT_MARK:SPAN_POINT_MARK==SPAN_EXCLUSIVE_EXCLUSIVE。
SPAN_POINT_MARK_MASK:
SPAN_POINT_POINT:长度为0的跨度型SPAN_POINT_POINT像游标:它们被插入文本被插入时,在其偏移的长度推进。在概念上的文字插入点之前
SPAN_PRIORITY:指定由SPAN_PRIORITY位图确定的顺序变更通知 - 较高的数字先走。你可能并不需要设置的,通常使用在当文本变化的时候,能有机会更新数据,在其他回调的方法里面进行处理之前
SPAN_PRIORITY_SHIFT:确定的顺序变更通知 - 较高的数字先走。你可能并不需要设置的,通常使用在当文本变化的时候,能有机会更新数据 在其他回调的方法里面进行处理之前
SPAN_USER:指定由SPAN_USER位域是呼叫者使用存储相关的标量数据与他们的跨度对象
SPAN_USER_SHIFT:位编号SPAN_USER_SHIFT的,可用于呼叫者使用存储相关的标量数据与他们的跨度对象。





TextView是用来显示文本的,有时需要给TextView中的个别字设置为超链接,或者设置个别字的颜色、字体等,那就需要用到Spannable对象,可以借助Spannable对象实现以上设置。
  效果图:

 Activity代码:
  Java代码
  package com.zhou.activity;
  import android.app.Activity;
  import android.graphics.Color;
  import android.os.Bundle;
  import android.text.Spannable;
  import android.text.SpannableString;
  import android.text.Spanned;
  import android.text.method.LinkMovementMethod;
  import android.text.style.BackgroundColorSpan;
  import android.text.style.ForegroundColorSpan;
  import android.text.style.StyleSpan;
  import android.text.style.URLSpan;
  import android.widget.TextView;
  public class TextViewLinkActivity extends Activity {
  TextView myTextView;
  @Override
  public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);
  myTextView = (TextView) this.findViewById(R.id.myTextView);
  //创建一个 SpannableString对象
  SpannableString sp = new SpannableString("这句话中有百度超链接,有高亮显示,这样,或者这样,还有斜体.");
  //设置超链接
  sp.setSpan(new URLSpan("http://www.baidu.com"), 5, 7,
  Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
  //设置高亮样式一
  sp.setSpan(new BackgroundColorSpan(Color.RED), 17 ,19,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
  //设置高亮样式二
  sp.setSpan(new ForegroundColorSpan(Color.YELLOW),20,24,Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
  //设置斜体
  sp.setSpan(new StyleSpan(android.graphics.Typeface.BOLD_ITALIC), 27, 29, Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
  //SpannableString对象设置给TextView
  myTextView.setText(sp);
  //设置TextView可点击
  myTextView.setMovementMethod(LinkMovementMethod.getInstance());
  }
  }


Android TextView多色显示实现与Spannable应用详解 在Android UI开发中,文本样式控制是基础但关键的技术点。通过Spannable接口,开发者可以在单个TextView中实现多色文本、混合样式等高级效果,其核心原理是利用Span对象对文本的不同区间附加样式属性。这种技术不仅提升了UI表现力,还能优化布局性能(相比多个TextView组合)。典型的应用场景包括电商价格对比、聊天关键词高亮、文本重点标注等。实现时需注意SpannableString与SpannableStringBuilder的选择,前者适合静态文本,后者支持动态修改。结合正则表达式可以 阅读详情

相关推荐

癌症免疫治疗预测神器TIDE:从原理到实战(避坑指南)

本文详细解析了癌症免疫治疗预测工具TIDE的核心原理及实战应用。TIDE算法通过模拟肿瘤免疫逃逸的两种核心机制(T细胞功能障碍和排除),为临床决策提供精准预测。文章涵盖数据准备、标准化流程、网页工具操作指南及结果解读,帮助科研人员和临床医生避开常见误区,优化免疫治疗策略。

weixin_29309475的博客 199

Android中的各类Span全面系统研究

Android中的各类Span全面系统研究 转自:http://chuansongme.com/n/20867 注意:效果图请点击原文查看       在android中,有时候需要对文本进行各种特别的设置,比如颜色、大小、首行缩进,或者是在一段文本中加入图片,甚至是书写一些特殊的公式。如果通过布局文件使用多个控件来实现,一方面会使的使用起来特别的复杂,增加了布局文

吾娱生活的专栏 1110

FISCO-BCOS配置及使用控制台

如果因为网络问题长时间无法下载,请尝试:curl -#LO https://gitee.com/FISCO-BCOS/console/raw/master-2.0/tools/download_console.sh && bash download_console.sh。为了可以更加方便快捷,所以HelloWorld合约已经被内置了,位于控制台下面的contracts/solidity/HelloWorld.sol。用于获取和设置name的值,合约代码如下。部署成功会返回合约地址。

qq_51562644的博客 832

TextView中Spannable的使用

textview中设置字符不同的颜色、大小、超链接、图片等效果

凌伊 1031

手把手教你用Cesium和RayMarching实现逼真体积云(附完整Shader代码)

本文详细介绍了如何利用Cesium和RayMarching技术实现逼真的体积云效果,包括环境准备、核心逻辑、云层建模和光照增强等关键步骤,并提供了完整的Shader代码。通过噪声函数选型、动态风场模拟和多重散射近似等技术,开发者可以在数字地球可视化项目中创建沉浸式天气效果,显著提升场景的真实感。

weixin_29230649的博客 417

BrepNet实战:5分钟搞定三维CAD模型的加工特征识别(附Python代码)

本文详细介绍了BrepNet在三维CAD模型加工特征识别中的实战应用,通过Python代码演示了从环境搭建到模型训练的全流程。BrepNet基于边界表示(BRep)的深度学习框架,能够高效识别加工特征,显著提升工业设计和智能制造领域的效率。文章还提供了性能优化和部署建议,帮助开发者快速实现AI驱动的几何特征识别。

weixin_29044713的博客 513

动态的给TextView末尾添加文本内容

动态的给TextView末尾添加文本内容

oAiYinSiTan12的博客 1816

Codex智能体从零搭建:环境配置、代码管理与MCP扩展实战

AI智能体(Agent)作为连接大语言模型与实际应用的关键技术,通过感知、决策与执行框架,将AI能力融入具体工作流。其核心原理在于利用提示工程、上下文管理与工具调用,将自然语言指令转化为可执行操作。在软件开发领域,AI智能体能够显著提升代码生成、项目管理和自动化任务的效率。通过Model Context Protocol(MCP)等标准化协议,智能体可以安全、结构化地集成外部工具与服务,实现能力扩展。本文聚焦于Codex这一AI驱动的代码助手平台,详细解析其环境配置、代码索引、记忆系统等核心模块,并深入探讨

weixin_34220179的博客 594

32、使用Spannable对TextView设置复合文本

使用Spannable对TextView设置复合文本,Spannable对文字的编辑减少TextView的拼接并且达到改变一串字符中的部分文字的字体颜色,背景颜色,字体大小,样式 增加文字的超链接。 参考: http://blog.youkuaiyun.com/g475266696/article/details/7668988

大星星的专栏 532

【AI智能体】QClaw 对接GitHub处理自动化任务实战操作详解

QClaw 对接GitHub处理自动化任务实战操作详解

congge 4871

Bean named‘ddlApplicationRunner‘is expected to be of type ‘org.springframework.boot.Runner‘

springboot3.1.7整合mybatisplus3.5.3.2版本报错,sringboot3.x整合myabtis报错

雾林小妖的博客 1万+

TextView

TextView使用Spannable设置复合文本:

Jamkier's zone 502

在Simulink中实现一个基于SiC MOSFET的高效率电机驱动系统

本文介绍了在Simulink中构建基于SiC MOSFET的高效率电机驱动系统的详细流程。系统由直流电源模块、SiC MOSFET逆变器模块、PMSM电机模型、控制策略模块(包括矢量控制和PWM生成)以及反馈测量模块组成。文章逐步指导了从模型创建到参数设置的完整过程,包括各模块的具体实现方法。通过仿真可以评估系统在不同负载条件下的响应速度、效率、功率密度等性能指标。该建模方法为电机驱动系统的设计和优化提供了有效工具,同时建议根据实际硬件规格和工程需求进行参数调整和定制化开发。

xiaoheshang_123的博客 251

TextView支持的HTML标签及其他

http://2960629.blog.51cto.com/2950629/751360 Textview并不支持所有的html标签。如果更复杂的,可以直接使用webview组件。 Android TextView 支持的HTML标签 There is a lovely method on the android.text.Html  clas

爱自在的专栏 2135

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

老版QQ原生表情gif动态

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

Android EditText/TextView使用SpannableString显示复合文本

在Android中EditText用于编辑文本,TextView用于显示文本,但是有时候我们需要对其中的文本进行样式等方面的设置。Android为我们提供了SpannableString类来对指定文本进行处理。 1) ForegroundColorSpan        文本颜色 [java] view plaincopyprint? private void set

feizhixuan46789的专栏 1万+

Android学习札记46:在TextView使用SpannableString设置复合文本

TextView 通常用来显示普通文本,但是有时候需要对其中某些文本进行样式、事件方面的设置。Android 系统通过 SpannableString 类来对指定文本进行相关处理,具体有以下功能:     1、BackgroundColorSpan 背景色      2、ClickableSpan 文本可点击,有点击事件     3、ForegroundColorSpan 文本颜色(前景色)

L_YQing的专栏 2298
上一篇: Java设计模式---访问者模式
下一篇: Android ViewPaper的Demo介绍
cding1818
博客等级 码龄17年 963粉丝 154原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值