49.Android中各种Span的用法

49.Android中各种Span的用法


前言

android.text.style包下,有一些Span类,可以提供我们完成一些在TextView中的特殊内容。(比如:部分内容颜色、字体、大小不同等等,更有部分字体可点击。

还有一个SpannableStringBuilder,可以帮助我们设置Span。

底下也有全部的源代码


SpannableStringBuilder

SpannableStringBuilder可以方便我们更好的设置上对应的Span。

设置Span
SpannableStringBuilder.setSpan(Object what, int start, int end, int flags)

这里的Flag表示:start和end是开区间还是闭区间。

Flag:

  • Spanned.SPAN_EXCLUSIVE_EXCLUSIVE —— (a,b)

  • Spanned.SPAN_EXCLUSIVE_INCLUSIVE —— (a,b]

  • Spanned.SPAN_INCLUSIVE_EXCLUSIVE —— [a,b)

  • Spanned.SPAN_INCLUSIVE_INCLUSIVE —— [a,b]


URLSpan

功能:点击文字,可以打开一个URL。

URLSpan(String url)

SpannableStringBuilder ssb = new SpannableStringBuilder(content);
ssb.setSpan(new URLSpan("https://github.com/CaMnter"), start, sub.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE);
contentTV.setText(ssb);
// 在单击链接时凡是有要执行的动作,都必须设置MovementMethod对象
contentTV.setMovementMethod(LinkMovementMethod.getInstance());
// 设置点击后的颜色,这里涉及到ClickableSpan的点击背景
contentTV.setHighlightColor(0xff8FABCC);

URLSpan


UnderlineSpan

功能:设置文字下划线。

UnderlineSpan()

SpannableStringBuilder ssb = new SpannableStringBuilder(content);
ssb.setSpan(new UnderlineSpan(), start, start + sub.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE);
contentTV.setText(ssb);

UnderlineSpan


TypefaceSpan

功能:设置文字字体。

TypefaceSpan(String family)构造方法源码中的注释提示了三种系统字体:

  • monospace

  • serif

  • sans-serif

    /**
     * @param family The font family for this typeface.  Examples include
     * "monospace", "serif", and "sans-serif".
     */
    public TypefaceSpan(String family) {
        mFamily = family;
    }
SpannableStringBuilder ssb = new SpannableStringBuilder(content);
ssb.setSpan(new TypefaceSpan("serif"), start, start + sub.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE);
contentTV.setText(ssb);

TypefaceSpan


TextAppearanceSpan

功能:设置文字字体、文字样式(粗体、斜体、等等)、文字颜色状态、文字下划线颜色状态等等。

TextAppearanceSpan的三个构造方法

TextAppearanceSpan(Context context, int appearance)

TextAppearanceSpan(Context context, int appearance, int colorList)

TextAppearanceSpan(String family, int style, int size,ColorStateList color, ColorStateList linkColor)

family:

  • monospace

  • serif

  • sans-serif

style:

  • Typeface.NORMAL

  • Typeface.BOLD

  • Typeface.ITALIC

  • Typeface.BOLD_ITALIC

size:表示字体大小(单位px)

  • 43
    点赞
  • 130
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值