预期效果
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);
本文介绍了如何在Android中利用`SpannableString`和`ForegroundColorSpan`为长文本中的不同部分设置自定义颜色和滚动效果,以实现同一行内多个文本的统一跑马灯显示。
1510

被折叠的 条评论
为什么被折叠?



