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

Android之实现两段颜色样式不同的文字拼接进行富文本方式的显示

一、使用SpannableString进行拼接

1、显示例子

前面文字显示红色,后面显示白色,显示在一个TextView中,可以自动换行

发送人姓名: 发送信息内容

2、TextView

<TextViewandroid:id="@+id/tv_msg"android:layout_width="wrap_content"android:layout_height="wrap_content"android:gravity="center_vertical"android:textColor="@color/red"android:textSize="14sp"tools:text=""/>

3、拼接

TextView tv_msg = findViewById(R.id.tv_msg);String s1 = "发送人姓名";
String s2 = "发送信息内容";String msg = s1 + ": " + s2;
int name_length = s1.length();
int all_msg_length = msg.length();SpannableString spannableString = new SpannableString(msg);
// 应用不同的颜色到文本的对应部分
//“发送人姓名: ”部分文字显示为红色
int color1 = ContextCompat.getColor(context, R.color.red);
ForegroundColorSpan colorSpan1 = new ForegroundColorSpan(color1);
spannableString.setSpan(colorSpan1, 0, name_length, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//"发送信息内容"部分文字显示白色
int color2 = ContextCompat.getColor(context, R.color.white);
ForegroundColorSpan colorSpan2 = new ForegroundColorSpan(color2);
spannableString.setSpan(colorSpan2, name_length + 2, all_msg_length, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//将spannableString赋值给TextView中即可
tv_msg.setText(spannableString);

二、持续更新中…

相关文章:

  • 支持 MKV、MP4、AVI、MPG 等格式视频转码器
  • Jmeter如何进行分布式测试
  • 云上战场:ToDesk云电脑、青椒云、顺网云全面对决
  • AI技术在客户反馈分析中的应用
  • R语言数据分析案例:探索在线零售数据集
  • C语言经典指针运算笔试题图文解析
  • java-SpringBoot执行定时任务-任务调度-@EnableScheduling和@Scheduled
  • JDBC简介
  • css记录:三维变化之transform-style
  • python数据分析-连云港石化基地2023年用电量分析
  • JAVA反射代码
  • go匿名函数
  • ES8新特性:async函数
  • [python学习]--模块管理
  • 面向龙芯LoongArch平台的AMD GPU补丁解决了一个“巨大平台错误“
  • @angular/forms 源码解析之双向绑定
  • 【EOS】Cleos基础
  • 【知识碎片】第三方登录弹窗效果
  • 345-反转字符串中的元音字母
  • android图片蒙层
  • canvas 高仿 Apple Watch 表盘
  • es6
  • iOS高仿微信项目、阴影圆角渐变色效果、卡片动画、波浪动画、路由框架等源码...
  • leetcode378. Kth Smallest Element in a Sorted Matrix
  • Markdown 语法简单说明
  • nginx 负载服务器优化
  • NSTimer学习笔记
  • PAT A1092
  • php ci框架整合银盛支付
  • Vue 2.3、2.4 知识点小结
  • vue-router的history模式发布配置
  • 关于springcloud Gateway中的限流
  • 前端技术周刊 2019-02-11 Serverless
  • 使用 5W1H 写出高可读的 Git Commit Message
  • 新书推荐|Windows黑客编程技术详解
  • 一个完整Java Web项目背后的密码
  • 原生 js 实现移动端 Touch 滑动反弹
  • MiKTeX could not find the script engine ‘perl.exe‘ which is required to execute ‘latexmk‘.
  • # .NET Framework中使用命名管道进行进程间通信
  • (1)STL算法之遍历容器
  • (C语言)fread与fwrite详解
  • (Matalb回归预测)PSO-BP粒子群算法优化BP神经网络的多维回归预测
  • (TipsTricks)用客户端模板精简JavaScript代码
  • (初研) Sentence-embedding fine-tune notebook
  • (分布式缓存)Redis哨兵
  • (剑指Offer)面试题41:和为s的连续正数序列
  • (牛客腾讯思维编程题)编码编码分组打印下标(java 版本+ C版本)
  • (原創) 如何動態建立二維陣列(多維陣列)? (.NET) (C#)
  • (转)JVM内存分配 -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m
  • (转)如何上传第三方jar包至Maven私服让maven项目可以使用第三方jar包
  • .NET Core实战项目之CMS 第十二章 开发篇-Dapper封装CURD及仓储代码生成器实现
  • .net 无限分类
  • .NET6 命令行启动及发布单个Exe文件
  • .NET分布式缓存Memcached从入门到实战
  • .NET简谈互操作(五:基础知识之Dynamic平台调用)