热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

Android中TextView实现分段显示不同颜色的字符串

在做项目的时候,遇到过一行文字有两种颜色。在菜鸟的时候直接会想到用多个TextView来实现,所以下面这篇文章主要给大家介绍了关于Android中TextView如何实现分段显示不同颜色字符串的相关资料,需要的朋友可以参考下。

关于TextView

TextView是Android开发中最最常见的控件之一,在API记录的属性有很多,但实际开发中,也遇到很多有趣的需求,值得去尝试,所以记录下来,既可以给大家提供参考,同时自己需要时候也方便查找.

最近开发过程中有个小小的知识点,就是TextView显示的内容需要分段显示不同的颜色,如下图所示


一般有三种实现方式

  • 直接根据不同的需要分段字符串,然后分别使用多个TextView来显示
  • 使用spannablestring
  • 使用Html

下面分别来简单介绍下三种方法

多个TextVew

  • 这种方式简单粗暴,颜色样式控制灵活
  • 如果需要显示的文本需要分多个段的话,那就需要很多个TextView,而且布局不好控制
  • 实现方式简单,就不写例子了

使用SpannableString

想必用过的人都知道,比较好的一点是SpannableString可以精确控制一个长长的字符串中第几个到第几个字符的样式

SpannableString spannableString = new SpannableString("jakjfkajfjaj");
//设置颜色
spannableString.setSpan(new ForegroundColorSpan(Color.parseColor("#FE6026")), 3, 6, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//设置字体大小,true表示前面的字体大小20单位为dip
spannableString.setSpan(new AbsoluteSizeSpan(20, true), 0, 5, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//设置链接
spannableString.setSpan(new URLSpan("www.baidu.com"), 0, 5, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//设置字体,BOLD为粗体
spannableString.setSpan(new StyleSpan(android.graphics.Typeface.BOLD), 0, 5, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

以上只是列举了几个常见的用法,更多的可以参考android.text.style包下面的几个类

 

不知道大家看出上面的SpannableString的局限了没有,没错,SpannableString的优点在于控制得精细,缺点也是在这。我们使用SpannableString的时候必须指定样式使用的字符下标,那如果我们的字符串不是固定长度的呢?

使用Html

如果使用场景是字符串长度不固定的,比如需要服务端的数据来填充的

"首付:" + data1 + "月供:" + data2

服务端返回的数据长度不固定的话,用SpannableString就尴尬了,这时候可以考虑用Html

Html使用格式比较简单,需要用到font标签,具体的话看下面的例子

//首先是拼接字符串
String cOntent= "" + data + ""
//然后直接setText()
TextView tvCOntent= (TextView) view.findViewById(R.id.tvContent);
tvContent.setText(Html.fromHtml(content));

以上就是TextView分段显示不同样式字符串的方法,希望对大家有用

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。


推荐阅读
  • 本文探讨了C++编程中理解代码执行期间复杂度的挑战,特别是编译器在程序运行时生成额外指令以确保对象构造、内存管理、类型转换及临时对象创建的安全性。 ... [详细]
  • 本文详细介绍了如何解决 Microsoft SQL Server 中用户 'sa' 登录失败的问题。错误代码为 18470,提示该帐户已被禁用。我们将通过 Windows 身份验证方式登录,并启用 'sa' 帐户以恢复其访问权限。 ... [详细]
  • ListView简单使用
    先上效果:主要实现了Listview的绑定和点击事件。项目资源结构如下:先创建一个动物类,用来装载数据:Animal类如下:packagecom.example.simplelis ... [详细]
  • 本文详细介绍了Java中实现异步调用的多种方式,包括线程创建、Future接口、CompletableFuture类以及Spring框架的@Async注解。通过代码示例和深入解析,帮助读者理解并掌握这些技术。 ... [详细]
  • 本文详细介绍了一种高效的算法——线性筛法,用于快速筛选出一定范围内的所有素数。通过该方法,可以显著提高求解素数问题的效率。 ... [详细]
  • Vue 开发与调试工具指南
    本文介绍了如何使用 Vue 调试工具,包括克隆仓库、安装依赖包、构建项目以及在 Chrome 浏览器中加载扩展的详细步骤。 ... [详细]
  • 本文详细介绍了 Android 开发中 layout_gravity 属性的使用方法及其在不同布局下的效果,旨在帮助开发者更好地理解和利用这一属性来精确控制视图的布局。 ... [详细]
  • 本文深入探讨了 Exchange Server 2010 中客户端访问的代理和重定向机制,特别是在跨站点环境中如何配置这些功能以确保用户能够顺利访问邮箱服务。通过详细解析不同场景下的应用,帮助管理员更好地理解和实施相关设置。 ... [详细]
  • 编写css让div2在div1的右下角? ... [详细]
  • 本文介绍了如何通过在数据库表中增加一个字段来记录文章的访问次数,并提供了一个示例方法用于更新该字段值。 ... [详细]
  • 本文探讨了过度依赖咖啡对生物钟的影响,以及如何合理划分学习和娱乐时间。通过反思,我们认识到即使是快乐的事情也需要适度,培养兴趣爱好应注重沉浸感和心流体验。文章还提供了一些具体的调整建议。 ... [详细]
  • 解决Spring Boot项目创建失败的问题
    在尝试创建新的Spring Boot项目时遇到了一些问题,具体表现为在项目创建过程中的两个关键步骤出现错误。本文将详细探讨这些问题及其解决方案。 ... [详细]
  • 一个登陆界面
    预览截图html部分123456789101112用户登入1314邮箱名称邮箱为空15密码密码为空16登 ... [详细]
  • 本文详细解释了涨停板交易(俗称“打板”)的定义、操作步骤及注意事项。涨停板交易是一种高风险高回报的投资策略,尤其在牛市中表现出色。文中不仅介绍了如何选择和买入涨停股票,还提供了三大纪律以规避风险。 ... [详细]
  • Java 中重写与重载的区别
    本文详细解析了 Java 编程语言中重写(Override)和重载(Overload)的概念及其主要区别,帮助开发者更好地理解和应用这两种多态性机制。 ... [详细]
author-avatar
手机用户2502930417
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有