SpannableString
可以对一个String设置前景色、背景色、字体大小、删除线、下划线、上角标、下角标、字体类型、插入图片、连接等。
类 | 说明 |
---|---|
ForegroundColorSpan | 前景色 |
BackgroundColorSpan | 背景色 |
RelativeSizeSpan | 字体相对大小 |
AbsoluteSizeSpan | 字体绝对大小 |
StrikethroughSpan | 删除线 |
UnderlineSpan | 下划线 |
SuperscriptSpan | 上角标 |
SubscriptSpan | 下角标 |
StyleSpan | 字体类型 |
ImageSpan | 图片 |
URLSpan | 超链接 |
inclusive
:包括,exclusive
:不包括。但是应用中发现 INCLUSIVE EXCLUSIVE
不起作用,都是包左不包右。
spaned | 说明 |
---|---|
Spanned.SPAN_INCLUSIVE_INCLUSIVE | 包左右 |
Spanned.SPAN_INCLUSIVE_EXCLUSIVE | 包左不包右 |
Spanned.SPAN_EXCLUSIVE_INCLUSIVE | 左右都不包 |
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE | 包右不包左 |
使用:
SpannableString text = new SpannableString("设置文字的前景色为红色");
ForegroundColorSpan span = new ForegroundColorSpan(Color.parseColor("#FF00FF"));
text.setSpan(span, 2, 3, Spanned.SPAN_EXCLUSIVE_INCLUSIVE);
tv1.setText(text);
其它还有:
BackgroundColorSpan span = new BackgroundColorSpan(Color.RED);
RelativeSizeSpan span = new RelativeSizeSpan(2.0f);
AbsoluteSizeSpan aSpan = new AbsoluteSizeSpan(50);
StrikethroughSpan span = new StrikethroughSpan();
UnderlineSpan span = new UnderlineSpan();
SuperscriptSpan span = new SuperscriptSpan();
SubscriptSpan span = new SubscriptSpan();
StyleSpan boldSpan = new StyleSpan(Typeface.BOLD);
插入图片
SpannableString text = new SpannableString("在文本中添加表情(表情)");
Drawable drawable = getResources().getDrawable(R.mipmap.ic_launcher);
drawable.setBounds(0, 0, 50, 50);
ImageSpan span = new ImageSpan(drawable);
text.setSpan(span, 6, 8, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
tv9.setText(text);
超链接:
SpannableString text = new SpannableString("给文字设置超链接百度");
URLSpan span = new URLSpan("http://www.baidu.com/");
text.setSpan(span, 8, 9, Spanned.SPAN_INCLUSIVE_INCLUSIVE);
tv10.setMovementMethod(LinkMovementMethod.getInstance());//跳转到手机默认浏览器中,必须加这一行代码
tv10.setHighlightColor(Color.parseColor("#969696"));
tv10.setText(text);
参考:
用SpannableString打造绚丽多彩的文本显示效果
【Android】TextView中不同大小字体如何上下垂直居中?
demo: https://git.oschina.net/AndroidUI/SpanableString01
类似的库:SuperTextView