Android开发:两个或者多个TextView一起跑马灯效果(Spannable实现一个TextView拥有多种文字属性)

本文介绍了如何在Android中利用`SpannableString`和`ForegroundColorSpan`为长文本中的不同部分设置自定义颜色和滚动效果,以实现同一行内多个文本的统一跑马灯显示。

预期效果

1、每个TextView可以通过singleLine="true"和ellipsize=“marquee”,以及代码中设置myTextView.setSelected(true)来实现长文本的跑马灯效果。

2、然而,实际我们使用时,往往可能需要设置同一行中的文本有不同的颜色或者其他属性。例如一行有名字和简介,希望两个的属性不同,但是长度可能超过显示,所以需要一起滚动。

遇到的问题

如果单纯的让每个TextView都跑马灯,那么有可能两个就各自跑马灯,这个效果在同一行中并不是我们想要的。

解决思路

不要局限于使用多个TextView实现跑马灯,实际上用一个也能实现,只需要把思路改成设置子字符串的文本属性。

使用SpannableString,它可以对任意字符进行属性更改,包括颜色、透明度等常见文字属性,透明度可以直接在设置颜色时做到,因为颜色值可以在RGB,也可以是ARGB值。

String title = getTitle();
String author = getAuthor();
SpannableString spannableString = new SpannableString(title + author);
spannableString.setSpan(
    new ForegroundColorSpan(ContextCompat.getColor(yourContext, R.color.your_color)), 
    title.length(), 
    title.length() + author.length(), 
    Spannable.SPAN_EXCLUSIVE_EXCLUSIVE
);
myTextView.setText(spannableString);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值