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

 更新时间:2017年12月09日 11:38:25   作者:xxq2dream   我要评论
在做项目的时候,遇到过一行文字有两种颜色。在菜鸟的时候直接会想到用多个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 = "<font color=\"#FE6026\">" + data + "</font>"
//然后直接setText()
TextView tvContent = (TextView) view.findViewById(R.id.tvContent);
tvContent.setText(Html.fromHtml(content));

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

总结

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

相关文章

  • NestedScrollView+Recyclerview下滑卡顿解决方法

    NestedScrollView+Recyclerview下滑卡顿解决方法

    本文为大家解决安卓开发时候NestedScrollView+Recyclerview下滑卡顿的问题,希望能够帮助到你。
    2017-11-11
  • Android仿京东首页轮播文字效果

    Android仿京东首页轮播文字效果

    这篇文章主要介绍了Android仿京东首页轮播文字效果,又名垂直跑马灯,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-10-10
  • Android中TextView显示圆圈背景或设置圆角的方法

    Android中TextView显示圆圈背景或设置圆角的方法

    TextView显示文本给用户,并允许他们选择编辑。TextView是一个完整的文本编辑器,但是其基本类配置为不允许编辑。下面这篇文章主要给大家介绍了关于Android中TextView显示圆圈背景或设置圆角的方法,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-05-05
  • Android获取手机通讯录、sim卡联系人及调用拨号界面方法

    Android获取手机通讯录、sim卡联系人及调用拨号界面方法

    这篇文章主要介绍了Android获取手机通讯录、sim卡联系人及调用拨号界面方法,本文分别给出实现代码实现获取通讯录和sim卡的联系人,以及权限配置和调用系统拨打电话的界面的实现代码,需要的朋友可以参考下
    2015-04-04
  • 快速解决Android平台移植ffmpeg的一些问题

    快速解决Android平台移植ffmpeg的一些问题

    模仿Android的MediaPlayer类实现了ffmpeg的播放接口,如setDataSource(),setDisplay(),start(), stop(),pause()等,缺点是没有实现seek功能
    2013-11-11
  • Handler与Android多线程详解

    Handler与Android多线程详解

    一开始,相信很多人都以为myThread中的run()方法会在一个新的线程中运行,但事实并非如此。以下代码中的handler并没有调用线程myThread的start()方法,而是直接调用了run()方法,这也就意味着实际上并没有创建一个新的线程,只是在当前线程中调用run()方法而已
    2013-10-10
  • Android WebView线性进度条实例详解

    Android WebView线性进度条实例详解

    这篇文章主要介绍了Android WebView线性进度条实例详解的相关资料,需要的朋友可以参考下
    2016-01-01
  • Android开发之ViewFlipper自动播放图片功能实现方法示例

    Android开发之ViewFlipper自动播放图片功能实现方法示例

    这篇文章主要介绍了Android开发之ViewFlipper自动播放图片功能实现方法,结合实例形式分析了Android使用ViewFlipper实现图片播放的相关界面布局及功能实现技巧,需要的朋友可以参考下
    2019-03-03
  • Android Metro菜单实现思路及代码

    Android Metro菜单实现思路及代码

    在安卓平台上实现一下Metro菜单效果,之前有介绍过了,相信大家对此不会陌生了吧,感兴趣的朋友可以了解下哈
    2013-06-06
  • FlowLayout流式布局实现搜索清空历史记录

    FlowLayout流式布局实现搜索清空历史记录

    这篇文章主要为大家详细介绍了FlowLayout流式布局实现搜索清空历史记录,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-12-12

最新评论