实现的效果就像这样,不知道是不是叫做动态处理文本。效果就是这么个效果,实现就是这么去实现,看下文分析。 使用场景需要高亮文本中的某些内容,以突出重要的数据或者诱导用户去点击该内容。实现方式可以通过
Html.fromHtml( ) 方式
首先需要拿到你要高亮的字符串,通过html标签去设置,下面的代码用到了 然后通过Html.from(string) 方法去解析该字符串即可实现效果。 String str2 = "我要<font color='#FF4081'>打赏</font>这个内容,<strong><font color='#FF4081'>作者太TM帅</font></strong>了balabala,谁也不许拦我,除非她给我发红包,或者点个Star";
mTvTestHtmlText.setText(Html.fromHtml(str2));
SpannableStringBuilder 方式
主要是通过 例如:效果图中的
组合使用实现的效果:
String str2 = "我要<font color='#FF4081'>打赏</font>这个内容,<strong><font color='#FF4081'>作者太TM帅</font></strong>了balabala,谁也不许拦我,除非她给我发红包,或者点个Star";
SpannableStringBuilder builder = new SpannableStringBuilder(str1);
// "我要"字体颜色变为粉色,Spanned.SPAN_EXCLUSIVE_INCLUSIVE 表示起始和终止的模式为:包左不包右
builder.setSpan(new ForegroundColorSpan(Color.parseColor("#FF4081")), 0, 2, Spanned.SPAN_EXCLUSIVE_INCLUSIVE);
// 设置背景色
builder.setSpan(new BackgroundColorSpan(Color.parseColor("#009ad6")), 4, 6, Spanned.SPAN_EXCLUSIVE_INCLUSIVE);
// 设置字体大小(绝对值,单位:像素)
builder.setSpan(new AbsoluteSizeSpan(80), 12, 14, Spanned.SPAN_EXCLUSIVE_INCLUSIVE);
// 设置粗体和斜体
builder.setSpan(new StyleSpan(Typeface.BOLD_ITALIC), 15, 23, Spanned.SPAN_EXCLUSIVE_INCLUSIVE);
// 设置删除线
builder.setSpan(new StrikethroughSpan(), 23, 29, Spanned.SPAN_EXCLUSIVE_INCLUSIVE);
// 设置下划线
builder.setSpan(new UnderlineSpan(), 29, 35, Spanned.SPAN_EXCLUSIVE_INCLUSIVE);
// 设置图片
builder.setSpan(new ImageSpan(this, R.mipmap.ic_launcher), 35, 38, Spanned.SPAN_EXCLUSIVE_INCLUSIVE);
// 设置点击
builder.setSpan(new ClickableSpan() {
@Override
public void onClick(View widget) {
Toast.makeText(MainActivity.this, "点击了打赏", Toast.LENGTH_SHORT).show();
}
}, 2, 4, Spanned.SPAN_EXCLUSIVE_INCLUSIVE);
mTvTestSpannerText.setText(builder);
// 设置点击
mTvTestSpannerText.setMovementMethod(LinkMovementMethod.getInstance()); |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|