Android SpannableString 用法

2017-02-20  本文已影响550人  _Stan丶

经常在工作中经常会遇到一段文字中为了突出某个特定词语而要将其颜色,大小,粗细等设置成和其他字体不一样的问题。刚开始不知道SpannableString的时候自己能想到的解决办法是将文字分成三个textview在放置,将需要突出的词语专门放入到一个textview中来对其设置一些属性。这种办法不仅笨重,而且布局调节起来也麻烦。

而SpannableString解决起这个问题就变的非常简单了,它可以直接的指定一段话中的某些关键字变成自己想要的样式。

用法如下:

SpannableString spannableString = new SpannableString(text);
spannableString.setSpan(span, 0, text.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
textview.setText(spannableString);

what的方法在网上可以搜索到很多,列举一下自己经常会用的一些:

在项目中使用时所遇到的“坑”

new ClickableSpan 需要重写两个方法 updateDrawState()和 onClick()

*updateDrawState()用来设置文字属性

*onClick()用来设置文字点击事件

最后放上一个SpannyUtils.java:

<pre><code>
import android.text.SpannableString;

import android.text.Spanned;

public class SpannyUtils {

/*
* Span lists:
*
* 1.new TypefaceSpan() arg: "monospace", "serif", and "sans-serif".
*
* 2.new ForegroundColorSpan() arg: int color
*
* 3.new BackgroundColorSpan() arg: int color
*
* 4.new StyleSpan() arg: Typeface.NORMAL,Typeface.BOLD,Typeface.ITALIC,Typeface.BOLD_ITALIC
*
* 5.new UnderlineSpan()
*
* 6.new StrikethroughSpan()
*
* 7.new URLSpan() arg: String Url
*
* 8.new ClickableSpan()
*
* */
public static SpannableString spanText(CharSequence text, Object... spans) {
    SpannableString spannableString = new SpannableString(text);
    for (Object span : spans) {
        spannableString.setSpan(span, 0, text.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
    }
    return spannableString;
}

public static SpannableString spanText(CharSequence text, Object span) {
    SpannableString spannableString = new SpannableString(text);
    spannableString.setSpan(span, 0, text.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
    return spannableString;
}

}

上一篇下一篇

猜你喜欢

热点阅读