概述
在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
SpannableString spannableString = new SpannableString("安卓开发从入门到放弃"); ForegroundColorSpan colorSpan = new ForegroundColorSpan(Color.BLUE); spannableString.setSpan(colorSpan,0,4,Spanned.SPAN_INCLUSIVE_EXCLUSIVE); textView.setText(spannableString);
-
下划线 UnderlineSpan
SpannableString spannableString = new SpannableString("安卓开发从入门到放弃");
UnderlineSpan underlineSpan = new UnderlineSpan();
spannableString.setSpan(underlineSpan,0,4,Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
textView.setText(spannableString);
-
中划线 StrikethroughSpan
SpannableString spannableString = new SpannableString("安卓开发从入门到放弃");
StrikethroughSpan strikethroughSpan = new StrikethroughSpan();
spannableString.setSpan(strikethroughSpan,0,4,Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
textView.setText(spannableString);
-
字体大小 AbsoluteSizeSpan
SpannableString spannableString = new SpannableString("安卓开发从入门到放弃");
AbsoluteSizeSpan absoluteSizeSpan = new AbsoluteSizeSpan(25);
spannableString.setSpan(absoluteSizeSpan,0,4,Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
textView.setText(spannableString);
-
字体背景色 BackgroundColorSpan
SpannableString spannableString = new SpannableString("安卓开发从入门到放弃");
BackgroundColorSpan absoluteSizeSpan = new BackgroundColorSpan(Color.BLUE);
spannableString.setSpan(absoluteSizeSpan,0,4,Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
textView.setText(spannableString);
-
斜体、粗体 StyleSpan
SpannableString 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
SpannableString 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
SpannableString 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的使用,实现富文本效果字体颜色 ForegroundColorSpan 下划线 UnderlineSpan 中划线 StrikethroughSpan 字体大小 AbsoluteSizeSpan 字体背景色 BackgroundColorSpan 斜体、粗体 StyleSpan 可点击 ClickableSpan 文本图片 ImageSpan所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复