Android 富文本 SpannableString的使用
2017-08-17 17:08
204 查看
先看一下要实现的效果
电话号码标红 并且可点击
直接上代码
String pre = "已经过物流地址,由快递员派dfkasdfljasldf送,派送电话:"; holder.tvContent.setText(pre); final String endStr = "1234567890"; SpannableString spanStr = new SpannableString(endStr); spanStr.setSpan(new ClickableSpan() { @Override public void updateDrawState(TextPaint ds) { super.updateDrawState(ds); ds.setColor(activity.getResources().getColor(R.color.f_red_text));//设置字体颜色 ds.setUnderlineText(false);//设置是否有下划线 //别的属性可以自行添加 } @Override public void onClick(View widget) { ToastUtil.showShort(endStr); } }, 0, endStr.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE); holder.tvContent.append(spanStr); holder.tvContent.setMovementMethod(LinkMovementMethod.getInstance());//开始响应点击事件
setSpan方法
int start:开始应用指定Span的位置,索引从0开始 int end:结束应用指定Span的位置,特效并不包括这个位置。比如如果这里数为3(即第4个字符),第4个字符不会有任何特效。从下面的例子也可以看出来。 int flags:取值有如下四个 Spannable.SPAN_EXCLUSIVE_EXCLUSIVE:不包括start、end位置,即start、end位置不会应用设置的样式。 Spannable.SPAN_EXCLUSIVE_INCLUSIVE :不包括start位置,包括end位置。即start位置不会应用设置的样式,end位置应用设置的样式。 Spannable.SPAN_INCLUSIVE_EXCLUSIVE :包括start位置,不包括end位置。即start位置会应用设置的样式,end位置不会应用设置的样式。 Spannable.SPAN_INCLUSIVE_INCLUSIVE :包括start、end位置,即start、end位置都会应用设置的样式。
还借鉴了一篇 虽然没用上 但是比较详细
private void addUrlSpan() { SpannableString spanString = new SpannableString("超链接"); URLSpan span = new URLSpan("tel:0123456789"); spanString.setSpan(span, 0, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); tv.append(spanString); } private void addBackColorSpan() { SpannableString spanString = new SpannableString("文字背景颜色"); BackgroundColorSpan span = new BackgroundColorSpan(Color.YELLOW); spanString.setSpan(span, 0, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); tv.append(spanString); } private void addForeColorSpan() { SpannableString spanString = new SpannableString("文字前景颜色"); ForegroundColorSpan span = new ForegroundColorSpan(Color.BLUE); spanString.setSpan(span, 0, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); tv.append(spanString); } private void addFontSpan() { SpannableString spanString = new SpannableString("36号字体"); AbsoluteSizeSpan span = new AbsoluteSizeSpan(36); spanString.setSpan(span, 0, 5, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); tv.append(spanString); } private void addStyleSpan() { SpannableString spanString = new SpannableString("BIBI"); StyleSpan span = new StyleSpan(Typeface.BOLD_ITALIC);//加粗 spanString.setSpan(span, 0, 2, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); tv.append(spanString); } private void addStrikeSpan() { SpannableString spanString = new SpannableString("删除线"); StrikethroughSpan span = new StrikethroughSpan(); spanString.setSpan(span, 0, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); tv.append(spanString); } private void addUnderLineSpan() { SpannableString spanString = new SpannableString("下划线"); UnderlineSpan span = new UnderlineSpan(); spanString.setSpan(span, 0, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); tv.append(spanString); } //图片 private void addImageSpan() { SpannableString spanString = new SpannableString(" "); Drawable d = getResources().getDrawable(R.drawable.ic_launcher); d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight()); ImageSpan span = new ImageSpan(d, ImageSpan.ALIGN_BASELINE); spanString.setSpan(span, 0, 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); tv.append(spanString); } }
相关文章推荐
- Android EditText/TextView使用SpannableString显示复合文本
- Android中TextView使用SpannableString设置复合文本
- Android复合文本SpannableString使用总结
- [置顶] Android EditText/TextView使用SpannableString显示复合文本
- Android EditText/TextView使用SpannableString显示复合文本
- Android EditText/TextView使用SpannableString显示复合文本
- Android TextView使用SpannableString设置复合文本的方法
- [Android教程]TextView使用SpannableString设置复合文本
- 【android】SpannableString详解及使用SpannableString设置复合文本
- Android 使用SpannableString设置金钱文本显示
- TextView使用SpannableString设置复合文本 + android弹出窗口的实现(PopupWindow)
- Android学习札记46:在TextView使用SpannableString设置复合文本
- [Android教程]TextView使用SpannableString设置复合文本
- Android—EditText/TextView使用SpannableString显示复合文本
- Android EditText/TextView使用SpannableString显示复合文本
- Android TextView使用SpannableString设置复合文本的方法详解
- Android 使用SpannableString显示复合文本
- Android EditText/TextView使用SpannableString显示复合文本
- Android EditText/TextView使用SpannableString显示复合文本
- Android EditText/TextView使用SpannableString显示复合文本