Android 强大的spannableStringBuilder

来源:互联网 发布:淘宝没有自然流量 编辑:程序博客网 时间:2024/05/17 09:13

SpannableStringBuilder介绍:

         This is the class for text whose content and markup can both be changed.
        (这是一个内容和标记都可以更改的文本类)

通俗一点理解就是一个富文本字符串,可以改变字符串长度,也可以通过设置字符串中某些字段的背景颜色,样式等等

SpannableStringBuilderSpannableString的区别类似与StringBuilderString,就是SpannableStringBuilder可以拼接,而SpannableString不可拼接,并且他们都继承了CharSequence,因此,他们可以直接在TextViewsetText中使用

主要方法:

SpannableStringBuilderSpannableString主要通过使用setSpan(Object what, int start, int end, int flags)改变文本样式。
对应的参数:

  • start: 指定Span的开始位置

  • end: 指定Span的结束位置,并不包括这个位置。

  • flags:取值有如下四个

    • Spannable.SPAN_EXCLUSIVE_INCLUSIVE:在 Span前面输入的字符不应用 Span的效果,在后面输入的字符应用Span效果。

    • Spannable.SPAN_INCLUSIVE_EXCLUSIVE:在 Span前面输入的字符应用 Span 的效果,在后面输入的字符不应用Span效果。

    • Spannable.SPAN_INCUJSIVE_INCLUSIVE:在 Span前后输入的字符都应用 Span 的效果。

    • Spannable.SPAN_EXCLUSIVE_EXCLUSIVE:前后都不包括。

  • what: 对应的各种Span,不同的Span对应不同的样式。已知的可用类有:

    • BackgroundColorSpan : 文本背景色

    • ForegroundColorSpan : 文本颜色

    • MaskFilterSpan : 修饰效果,如模糊(BlurMaskFilter)浮雕

    • RasterizerSpan : 光栅效果

    • StrikethroughSpan : 删除线

    • SuggestionSpan : 相当于占位符

    • UnderlineSpan : 下划线

    • AbsoluteSizeSpan : 文本字体(绝对大小)

    • DynamicDrawableSpan : 设置图片,基于文本基线或底部对齐。

    • ImageSpan : 图片

    • RelativeSizeSpan : 相对大小(文本字体)

    • ScaleXSpan : 基于x轴缩放

    • StyleSpan : 字体样式:粗体、斜体等

    • SubscriptSpan : 下标(数学公式会用到)

    • SuperscriptSpan : 上标(数学公式会用到)

    • TextAppearanceSpan : 文本外貌(包括字体、大小、样式和颜色)

    • TypefaceSpan : 文本字体

    • URLSpan : 文本超链接

    • ClickableSpan : 点击事件

简单用法:

 SpannableString ss = new SpannableString("这是什么我刚知道,什么也没说,啥都乱,一片乱哄哄的图片:."); 
         //用颜色标记文本
         ss.setSpan(new ForegroundColorSpan(Color.RED), 0, 3, 
                 //setSpan时需要指定的 flag,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE(前后都不包括).
                 Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
         //用超链接标记文本
         ss.setSpan(new URLSpan("tel:1233558712"), 3, 6, 
                 Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
         //用样式标记文本(斜体)
         ss.setSpan(new StyleSpan(Typeface.BOLD_ITALIC), 6, 9, 
                 Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
         //用删除线标记文本
         ss.setSpan(new StrikethroughSpan(), 9, 18, 
                 Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
         //用下划线标记文本
         ss.setSpan(new UnderlineSpan(), 18, 29, 
                 Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

   总体来说,掌握住了使用方法,可以在一个TextView中直接一段显示出来了,就现在去试试吧~~~

原创粉丝点击