在Android开发过程中,总会有些需求涉及到TextView展示形式复杂多样的文字,例如下划线、斜体、超链接等。其实SpannableString就能够简便的设置文字样式。
核心方法
object what:ForegroundColorSpan、UnderlineSpan等各种Span;
int start:字符开始位置
int end:字符结束位置
int flags:取值有如下四个Spanned.SPAN_INCLUSIVE_EXCLUSIVE
从起始下标到终了下标,包括起始下标Spanned.SPAN_INCLUSIVE_INCLUSIVE
从起始下标到终了下标,同时包括起始下标和终了下标Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
从起始下标到终了下标,但都不包括起始下标和终了下标Spanned.SPAN_EXCLUSIVE_INCLUSIVE
从起始下标到终了下标,包括终了下标
先去试试看
-
字体颜色 ForegroundColorSpan
复制代码1
2
3
4SpannableString spannableString = new SpannableString("安卓开发从入门到放弃"); ForegroundColorSpan colorSpan = new ForegroundColorSpan(Color.BLUE); spannableString.setSpan(colorSpan,0,4,Spanned.SPAN_INCLUSIVE_EXCLUSIVE); textView.setText(spannableString);
-
下划线 UnderlineSpan
1
2
3
4SpannableString spannableString = new SpannableString("安卓开发从入门到放弃"); UnderlineSpan underlineSpan = new UnderlineSpan(); spannableString.setSpan(underlineSpan,0,4,Spanned.SPAN_INCLUSIVE_EXCLUSIVE); textView.setText(spannableString);
-
中划线 StrikethroughSpan
1
2
3
4SpannableString spannableString = new SpannableString("安卓开发从入门到放弃"); StrikethroughSpan strikethroughSpan = new StrikethroughSpan(); spannableString.setSpan(strikethroughSpan,0,4,Spanned.SPAN_INCLUSIVE_EXCLUSIVE); textView.setText(spannableString);
-
字体大小 AbsoluteSizeSpan
1
2
3
4SpannableString spannableString = new SpannableString("安卓开发从入门到放弃"); AbsoluteSizeSpan absoluteSizeSpan = new AbsoluteSizeSpan(25); spannableString.setSpan(absoluteSizeSpan,0,4,Spanned.SPAN_INCLUSIVE_EXCLUSIVE); textView.setText(spannableString);
-
字体背景色 BackgroundColorSpan
1
2
3
4SpannableString spannableString = new SpannableString("安卓开发从入门到放弃"); BackgroundColorSpan absoluteSizeSpan = new BackgroundColorSpan(Color.BLUE); spannableString.setSpan(absoluteSizeSpan,0,4,Spanned.SPAN_INCLUSIVE_EXCLUSIVE); textView.setText(spannableString);
-
斜体、粗体 StyleSpan
1
2
3
4
5
6SpannableString spannableString = new SpannableString("安卓开发从入门到放弃"); StyleSpan styleSpan1 = new StyleSpan(Typeface.BOLD); StyleSpan styleSpan2 = new StyleSpan(Typeface.ITALIC); spannableString.setSpan(styleSpan1,5,7,Spanned.SPAN_INCLUSIVE_EXCLUSIVE); spannableString.setSpan(styleSpan2,8,10,Spanned.SPAN_INCLUSIVE_EXCLUSIVE); textView.setText(spannableString);
-
可点击 ClickableSpan
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20SpannableString spannableString = new SpannableString("安卓开发从入门到放弃"); //必须添加,否则点击时间无效 textView.setMovementMethod(LinkMovementMethod.getInstance()); MyClickSpan clickSpan = new MyClickSpan(); spannableString.setSpan(clickSpan,0,4,Spanned.SPAN_INCLUSIVE_EXCLUSIVE); textView.setText(spannableString); class MyClickSpan extends ClickableSpan { @Override public void updateDrawState(TextPaint ds) { ds.bgColor = getResources().getColor(R.color.white); } @Override public void onClick(@NonNull View widget) { ToastUtils.showToast("被点击了"); } }
-
文本图片 ImageSpan
1
2
3
4
5
6SpannableString spannableString = new SpannableString("安卓开发从入门到放弃"); Drawable drawable = getResources().getDrawable(R.drawable.coin); drawable.setBounds(0, 0, 42, 42); ImageSpan imageSpan = new ImageSpan(drawable); spannableString.setSpan(imageSpan,3,5,Spanned.SPAN_INCLUSIVE_EXCLUSIVE); textView.setText(spannableString);
其实还有其他的各种风格的span,模式大同小异,有兴趣可以实现一下。
最后
以上就是飞快芒果最近收集整理的关于SpannableString的使用,实现富文本效果字体颜色 ForegroundColorSpan 下划线 UnderlineSpan 中划线 StrikethroughSpan 字体大小 AbsoluteSizeSpan 字体背景色 BackgroundColorSpan 斜体、粗体 StyleSpan 可点击 ClickableSpan 文本图片 ImageSpan的全部内容,更多相关SpannableString的使用,实现富文本效果字体颜色内容请搜索靠谱客的其他文章。
发表评论 取消回复