// 示例1,将文字中的特定字符转换为图片显示
String string1 = "把文字中的<img>替换为应用程序图标<img><img>";
// 多次更改内容需要使用SpannableString
SpannableString spannableString1 = new SpannableString(string1);
String regex = "<img>";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(string1);
while (matcher.find()) {
spannableString1.setSpan(new ImageSpan(this, R.mipmap.ic_launcher), matcher.start(),
matcher.end(), Spanned.SPAN_INCLUSIVE_INCLUSIVE);
}
tv_1.setText(string1);
tv_1_span.setText(spannableString1);
// 示例2,将文字转换为超链接,任意的URI类型都可以设置
String string2 = "点击进入黑马程序员官网";
SpannableString spannableString2 = new SpannableString(string2);
spannableString2.setSpan(new URLSpan("http://www.itheima.com"), 0, spannableString2
.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
// // 打电话
// spannableString2.setSpan(new URLSpan("tel://110"), 0, spannableString2
// .length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
tv_2.setText(string2);
tv_2_span.setText(spannableString2);
// 带点击事件的文本需要TextView设置MovementMethod响应
tv_2_span.setMovementMethod(LinkMovementMethod.getInstance());
// 示例3,自定义超链接文字的点击事件
String string3 = "点击弹一个吐司";
SpannableString spannableString3 = new SpannableString(string3);
spannableString3.setSpan(new ClickableSpan() {
@Override
public void onClick(View widget) {
Toast.makeText(MainActivity.this, "我是一个吐司", Toast.LENGTH_SHORT).show();
}
}, 0, spannableString3
.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
tv_3.setText(string3);
tv_3_span.setText(spannableString3);
// 带点击事件的文本需要TextView设置MovementMethod响应
tv_3_span.setMovementMethod(LinkMovementMethod.getInstance());
// 示例4,设置下划线、删除线、上标和下标
String string4 = "设置下划线、删除线、上标2和下标2";
SpannableString spannableString4 = new SpannableString(string4);
// 设置下划线
spannableString4.setSpan(new UnderlineSpan(), 2, 5, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
// 设置删除线
spannableString4.setSpan(new StrikethroughSpan(), 6, 9, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
// 设置文字为上标
spannableString4.setSpan(new SuperscriptSpan(), 12, 13, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
// 设置文字为下标
spannableString4.setSpan(new SubscriptSpan(), 16, 17, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
tv_4.setText(string4);
tv_4_span.setText(spannableString4);
// 示例5,设置正常字体、粗体、斜体和粗斜体
String string5 = "设置正常字体、粗体、斜体和粗斜体";
SpannableString spannableString5 = new SpannableString(string5);
//设置一个字体,默认的字体可能不支持
spannableString5.setSpan(new TypefaceSpan("monospace"), 0, spannableString5.length(),
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
// 设置文字为正常字体
spannableString5.setSpan(new StyleSpan(Typeface.NORMAL), 2, 6, Spanned
.SPAN_EXCLUSIVE_EXCLUSIVE);
// 设置文字为粗体
spannableString5.setSpan(new StyleSpan(Typeface.BOLD), 7, 9, Spanned
.SPAN_EXCLUSIVE_EXCLUSIVE);
// 设置文字为斜体
spannableString5.setSpan(new StyleSpan(Typeface.ITALIC), 10, 12, Spanned
.SPAN_EXCLUSIVE_EXCLUSIVE);
// 设置文字为粗斜体
spannableString5.setSpan(new StyleSpan(Typeface.BOLD_ITALIC), 13, 16, Spanned
.SPAN_EXCLUSIVE_EXCLUSIVE);
tv_5.setText(string5);
tv_5_span.setText(spannableString5);
42.81 KB, 下载次数: 52
源码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) | 黑马程序员IT技术论坛 X3.2 |