前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >会变色的TextView

会变色的TextView

作者头像
猴哥yuri
发布2018-08-16 15:38:59
7380
发布2018-08-16 15:38:59
举报
文章被收录于专栏:极客猴极客猴

近几年来,网络直播可以说是非常火热。网红也是遍地花开,其中不少主播在 PC 端做直播,也有很多主播用手机来直播。主播和观众经常需要互动交流,所以文字交流必不可少。在公司的 APP 中有类似如下图的聊天文字效果。一条聊天信息中,发送者名字的颜色是会随机改变,而内容信息是固定一个颜色。

你认为先实现这方法很简单,使用两个 TextView 控件就可以搞定完事。左边的 TextView 放置名字,右边的 TextView 放置内容。这种方法是可以实现,那有没有更好的方法呢?答案是肯定的。本文的主角就是 SpannableString 。

1

介绍 SpannableString

SpannableString 继承于 SpannableStringInternal,同时实现了 CharSequence, GetChars, Spannable 这几个接口。它的作用是能够改变字符串的字体颜色,设置字符串的字体样式,为字符串添加下划线等。

2

使用 SpannableString

SpannableString 用法可以分为三部走: 首先实例化一个 SpannableString 对象,然后为其设置样式,最后将 spanStirng 填充到 TextView 中。具体可以看下面的代码:

spanString 最主要也是我们最常用的方法 setSpan(Object what, int start, int end, int flags)。它需要传入四个参数,这四个参数作用的分别是:

what 为想要设置的样式类。 start 为样式生效的起始位置。因为 SpannableString 是实现了 CharSequence 接口,所以是按照字符来计算的。 end 为样式生效的结束位置。 flags 为标记,标记样式生效的范围。

what 有以下这些类:

样式类

效果说明

ForegroundColorSpan

文本颜色(前景色)

BackgroundColorSpan

背景色

ClickableSpan

设置文本可点击

DynamicDrawableSpan

设置图片,基于文本基线或底部对齐

MaskFilterSpan

修饰效果,如模糊(BlurMaskFilter)、浮雕(EmbossMaskFilter)

MetricAffectingSpan

父类,一般不用

RasterizerSpan

光栅效果

StrikethroughSpan

删除线(中划线)

SuggestionSpan

相当于占位符

UnderlineSpan

下划线

AbsoluteSizeSpan

绝对大小(文本字体)

ImageSpan

图片

RelativeSizeSpan

相对大小(文本字体)

ReplacementSpan

父类,一般不用

ScaleXSpan

基于 x 轴缩放

StyleSpan

字体样式:粗体、斜体等

SubscriptSpan

下标(数学公式会用到)

SuperscriptSpan

上标(数学公式会用到)

TextAppearanceSpan

文本外貌(包括字体、大小、样式和颜色)

TypefaceSpan

文本字体

URLSpan

文本超链接

flags 也有四个参数,分别是:

1) Spannable.SPAN_EXCLUSIVE_EXCLUSIVE:前后都不包括,即在指定范围的前面和后面插入新字符都不会应用新样式 2) Spannable.SPAN_EXCLUSIVE_INCLUSIVE:前面不包括,后面包括。即仅在范围字符的后面插入新字符时会应用新样式 3) Spannable.SPAN_INCLUSIVE_EXCLUSIVE:前面包括,后面不包括。 4) Spannable.SPAN_INCLUSIVE_INCLUSIVE:前后都包括。

3

代码实现

这么多消息,当然需要一个列表来呈现。我选择 RecycleView 来显示数据,它的 item 布局中放置一个 TextView。

在 Adapter 的绑定视图的方法中,使用 SpannableString 为要显示的字符串设置效果

小贴士

因微信不支持站内链接, 请点击【阅读原文】阅读完整的代码

作者:猴哥,公众号:极客猴。爱好读书,喜欢钻研技术,梦想成为文艺青年的IT Boy。

- END -

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-05-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 极客猴 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云直播
云直播(Cloud Streaming Services,CSS)为您提供极速、稳定、专业的云端直播处理服务,根据业务的不同直播场景需求,云直播提供了标准直播、快直播、云导播台三种服务,分别针对大规模实时观看、超低延时直播、便捷云端导播的场景,配合腾讯云视立方·直播 SDK,为您提供一站式的音视频直播解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档