Android SpannaleString详解
时间: 2023-11-28 16:49:23 浏览: 28
Android 中的 SpannableString 是一个可变的字符串类型,可以在其中添加格式化效果,如字体颜色、字体大小、下划线、删除线等等。SpannableString 可以用于 TextView 中显示富文本,也可以用于 EditText 中实现输入框中不同格式的文字。
创建 SpannableString
可以通过以下方法创建 SpannableString:
```
SpannableString spannableString = new SpannableString("Hello, World!");
```
添加格式化效果
可以使用 setSpan() 方法向 SpannableString 中添加格式化效果,该方法的参数包括效果类型和效果的起始位置和终止位置。以下是一些常用的效果类型:
1. ForegroundColorSpan:设置文字颜色
```
ForegroundColorSpan colorSpan = new ForegroundColorSpan(Color.RED);
spannableString.setSpan(colorSpan, 0, 5, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
```
2. BackgroundColorSpan:设置文字背景颜色
```
BackgroundColorSpan bgSpan = new BackgroundColorSpan(Color.YELLOW);
spannableString.setSpan(bgSpan, 6, 12, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
```
3. RelativeSizeSpan:设置文字大小
```
RelativeSizeSpan sizeSpan = new RelativeSizeSpan(1.5f);
spannableString.setSpan(sizeSpan, 13, 19, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
```
4. StrikethroughSpan:添加删除线
```
StrikethroughSpan strikethroughSpan = new StrikethroughSpan();
spannableString.setSpan(strikethroughSpan, 20, 25, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
```
5. UnderlineSpan:添加下划线
```
UnderlineSpan underlineSpan = new UnderlineSpan();
spannableString.setSpan(underlineSpan, 26, 32, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
```
6. StyleSpan:设置字体样式
```
StyleSpan styleSpan = new StyleSpan(Typeface.BOLD_ITALIC);
spannableString.setSpan(styleSpan, 33, 39, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
```
7. ClickableSpan:设置可点击效果
```
ClickableSpan clickableSpan = new ClickableSpan() {
@Override
public void onClick(View widget) {
// 点击事件处理
}
};
spannableString.setSpan(clickableSpan, 40, 46, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
```
除了以上几种,还有很多其他的效果类型可以使用,具体可以参考 Android 官方文档。
显示 SpannableString
可以将 SpannableString 直接设置给 TextView 或 EditText 的 text 属性来显示富文本,也可以使用 setText() 方法来设置。
```
textView.setText(spannableString);
```
注意:如果使用 ClickableSpan 添加了点击效果,需要将 TextView 或 EditText 设置为可点击,否则点击事件不会生效。
```
textView.setMovementMethod(LinkMovementMethod.getInstance());
```