SpannableString属性详解

转载 2017年01月03日 22:12:48
 1、BackgroundColorSpan 背景色 
    2、ClickableSpan 文本可点击,有点击事件

    3、ForegroundColorSpan 文本颜色(前景色)
    4、MaskFilterSpan 修饰效果,如模糊(BlurMaskFilter)、浮雕(EmbossMaskFilter)
    5、MetricAffectingSpan 父类,一般不用
    6、RasterizerSpan 光栅效果
    7、StrikethroughSpan 删除线(中划线)
    8、SuggestionSpan 相当于占位符
    9、UnderlineSpan 下划线
    10、AbsoluteSizeSpan 绝对大小(文本字体)
    11、DynamicDrawableSpan 设置图片,基于文本基线或底部对齐。
    12、ImageSpan 图片
    13、RelativeSizeSpan 相对大小(文本字体)
    14、ReplacementSpan 父类,一般不用
    15、ScaleXSpan 基于x轴缩放
    16、StyleSpan 字体样式:粗体、斜体等
    17、SubscriptSpan 下标(数学公式会用到)
    18、SuperscriptSpan 上标(数学公式会用到)
    19、TextAppearanceSpan 文本外貌(包括字体、大小、样式和颜色)
    20、TypefaceSpan 文本字体

    21、URLSpan 文本超链接



BackgroundColorSpan 背景色

    SpannableString spanText = new SpannableString("benzlocke");

    spanText.setSpan(new BackgroundColorSpan(Color.GREEN), 0, spanText.length(),

    Spannable.SPAN_INCLUSIVE_EXCLUSIVE);

    mTVText.append("\n");

    mTVText.append(spanText);



    ForegroundColorSpan 文本颜色(前景色)

    spanText = new SpannableString("benzlocke");

    spanText.setSpan(new ForegroundColorSpan(Color.BLUE), 6, spanText.length(),

    Spannable.SPAN_INCLUSIVE_EXCLUSIVE);

    mTVText.append("\n");

    mTVText.append(spanText);



    MaskFilterSpan 修饰效果,如模糊(BlurMaskFilter)、浮雕(EmbossMaskFilter)

    spanText = new SpannableString("benzlocke");

    int length = spanText.length();

    //模糊(BlurMaskFilter)

    MaskFilterSpan maskFilterSpan = new MaskFilterSpan(new BlurMaskFilter(3, Blur.OUTER));

    spanText.setSpan(maskFilterSpan, 0, length - 10, Spannable.

    SPAN_INCLUSIVE_EXCLUSIVE);

    //浮雕(EmbossMaskFilter)

    maskFilterSpan = new MaskFilterSpan(new EmbossMaskFilter(new float[]{1,1,3}, 1.5f, 8, 3));

    spanText.setSpan(maskFilterSpan, length - 10, length, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);

    mTVText.append("\n");

    mTVText.append(spanText);


    RasterizerSpan 光栅效果

    spanText = new SpannableString("StrikethroughSpan");

    spanText.setSpan(new StrikethroughSpan(), 0, 7, Spannable.

    SPAN_INCLUSIVE_EXCLUSIVE);

    mTVText.append("\n");

    mTVText.append(spanText);


    StrikethroughSpan 删除线

    spanText = new SpannableString("StrikethroughSpan");

    spanText.setSpan(new StrikethroughSpan(), 0, 7, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);

    mTVText.append("\n");

    mTVText.append(spanText);


    SuggestionSpan

    相当于占位符,一般用在EditText输入框中。当双击此文本时,会弹出提示框选择一些建议(推荐的)文字,选中的文本将替换此占位符。在输入法上用的较多。


    UnderlineSpan 下划线

    spanText = new SpannableString("UnderlineSpan");

    spanText.setSpan(new UnderlineSpan(), 0, spanText.length(),

    Spannable.SPAN_INCLUSIVE_EXCLUSIVE);

    mTVText.append("\n");

    mTVText.append(spanText);


    AbsoluteSizeSpan 绝对大小(文本字体)

    spanText = new SpannableString("AbsoluteSizeSpan");

    spanText.setSpan(new AbsoluteSizeSpan(20, true), 0, spanText.length(),

    Spannable.SPAN_INCLUSIVE_EXCLUSIVE);

    mTVText.append("\n");

    mTVText.append(spanText);


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

    DynamicDrawableSpan drawableSpan = new DynamicDrawableSpan(DynamicDrawableSpan.ALIGN_BASELINE) {

    @Override

        public Drawable getDrawable() {

            Drawable d = getResources().getDrawable(R.drawable.ic_launcher);

            d.setBounds(0, 0, 50, 50);

            return d;

        }

    };
//d.setBounds(0,0,d.getIntrinsicWidth(),d.getIntrinsicHeight());//表示设置图形的边框,边框设置小的话就会压缩,设置大的话就会拉伸,drawable.getIntrinsicWidth()表示获取这个图片的像素宽
    DynamicDrawableSpan drawableSpan2 = new DynamicDrawableSpan(

    DynamicDrawableSpan.ALIGN_BOTTOM) {

        @Override

        public Drawable getDrawable() {

              Drawable d = getResources().getDrawable(R.drawable.ic_launcher);

              d.setBounds(0, 0, 50, 50);

                    return d;

                }

            };

    spanText.setSpan(drawableSpan, 3, 4, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);

    spanText.setSpan(drawableSpan2, 7, 8, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);

    mTVText.append("\n");

    mTVText.append(spanText);

    //左边图片基于基线对齐,右边图片基于底部对齐


    ImageSpan 图片

    spanText = new SpannableString("ImageSpan");

    Drawable d = getResources().getDrawable(R.drawable.ic_launcher);

    d.setBounds(0, 0, 50, 50);

    spanText.setSpan(new ImageSpan(d), 3, 4, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);

    mTVText.append("\n");

    mTVText.append(spanText);

    //和DynamicDrawableSpan差别不大




    RelativeSizeSpan 相对大小(文本字体)

    spanText = new SpannableString("RelativeSizeSpan");

    //参数proportion:比例大小

    spanText.setSpan(new RelativeSizeSpan(2.5f), 3, 4,

    Spannable.SPAN_INCLUSIVE_EXCLUSIVE);

    mTVText.append("\n");

    mTVText.append(spanText);

    //相对大小的比例是基于当前文本字体大小


    ScaleXSpan 基于x轴缩放

    spanText = new SpannableString("benzlocke");

    //参数proportion:比例大小

    spanText.setSpan(new ScaleXSpan(3.8f), 3, 7, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);

    mTVText.append("\n");

    mTVText.append(spanText);


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

    spanText = new SpannableString("benzlocke");

    //Typeface.BOLD_ITALIC:粗体+斜体

    spanText.setSpan(new StyleSpan(Typeface.BOLD_ITALIC), 3, 7,

    Spannable.SPAN_INCLUSIVE_EXCLUSIVE);

    mTVText.append("\n");

    mTVText.append(spanText);


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

    spanText = new SpannableString("benzlocke");

    spanText.setSpan(new SubscriptSpan(), 6, 7, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);

    mTVText.append("\n");

    mTVText.append(spanText);


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

    spanText = new SpannableString("benzlocke");

    spanText.setSpan(new SuperscriptSpan(), 6, 7, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);

    mTVText.append("\n");

    mTVText.append(spanText);


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

    spanText = new SpannableString("benzlocke");

    //若需自定义TextAppearance,可以在系统样式上进行修改

    spanText.setSpan(new TextAppearanceSpan(this, android.R.style.TextAppearance_Medium), 6, 7, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);

    mTVText.append("\n");

    mTVText.append(spanText);

    //系统还提供了相关值TextAppearance_Small, TextAppearance_Large等。如有需要可在以上样式基础上修改。


    TypefaceSpan 文本字体

    spanText = new SpannableString("benzlocke");

    //若需使用自定义字体,可能要重写类TypefaceSpan

    spanText.setSpan(new TypefaceSpan("monospace"), 3, 10,

    Spannable.SPAN_INCLUSIVE_EXCLUSIVE);

    mTVText.append("\n");

    mTVText.append(spanText);

    //关于自定义字体的设置,后面将介绍如何使用


    URLSpan 文本超链接

    spanText = new SpannableString("benzlocke");

    spanText.setSpan(new URLSpan("http://orgcent.com"), 10, spanText.length(),

    Spannable.SPAN_INCLUSIVE_EXCLUSIVE);

    mTVText.append("\n");

    mTVText.append(spanText);

    //让URLSpan可以点击

    mTVText.setMovementMethod(new LinkMovementMethod());


SpannableString.jpg


http://blog.csdn.net/lan410812571/article/details/9083023

android TextView中文字通过SpannableString设置属性

在Android中,TextView是我们最常用的用来显示文本的控件。   一般情况下,TextView中的文本都是一个样式。那么如何对于TextView中各个部分的文本来设置字体,大小,颜色,...
  • xiangzilv1987
  • xiangzilv1987
  • 2012年11月22日 13:58
  • 18113

Android:SpannableString属性详解

1、BackgroundColorSpan 背景色      2、ClickableSpan 文本可点击,有点击事件     3、ForegroundColorSpan 文本颜色(前景色) ...
  • HMYANG314
  • HMYANG314
  • 2014年12月15日 11:05
  • 693

SpannableString属性详解

背景介绍 在开发应用过程中经常会遇到显示一些不同的字体风格的信息犹如默认的LockScreen上面的时间和充电信息。对于类似的情况,可能第一反应就是用不同的多个TextView来实现,对于每...
  • F7ANTY
  • F7ANTY
  • 2014年01月28日 11:16
  • 696

Android SpannableString属性详解

1、BackgroundColorSpan 背景色 2、ClickableSpan 文本可点击,有点击事件 3、ForegroundColorSpan 文本颜色(前景色) ...
  • qq_26761229
  • qq_26761229
  • 2016年09月13日 14:18
  • 145

Android学习分享-常见控件01-TextView详解

Android 常见控件TextView
  • liu_hui2015
  • liu_hui2015
  • 2016年04月23日 19:37
  • 427

SpannableString属性

1、BackgroundColorSpan 背景色      2、ClickableSpan 文本可点击,有点击事件     3、ForegroundColorSpan 文本颜色(前景色) ...
  • zhaozhiwen6140
  • zhaozhiwen6140
  • 2016年03月23日 10:56
  • 143

android TextView 使用SpannableString数据源时,TextView的ellipsize失效

这儿遇到个问题,就是TextView单行超过长度使用“...”结束,如果是一般的String类型的数据,就可以直接用ellipsize属性加上singleline就可以了,但是如果数据源是Spanna...
  • htyxz8802
  • htyxz8802
  • 2015年12月23日 16:27
  • 2602

Android开发之SpannableString详解

在实际的应用开发过程中经常会遇到,在文本的不同部分显示一些不同的字体风格的信息如:文本的字体、大小、颜色、样式、以及超级链接等。一般情况下,TextView中的文本都是一个样式,对于类似的情况,可以借...
  • fengyuzhengfan
  • fengyuzhengfan
  • 2014年08月09日 19:35
  • 9316

SpannableString 实现textview图文混排等 其他文字效果(下划线 删除线 字体大小混搭等)

SpannableString 属性详解 1、BackgroundColorSpan 背景色 2、ClickableSpan 文本可点击,有点击事件 3、ForegroundColorSpa...
  • ToAndroidFast
  • ToAndroidFast
  • 2016年07月21日 14:50
  • 798

textview使用SpannableString设置文字样式后,排版参差不齐的解决办法

如果你的textview使用了SpannableString设置文字的样式,但是设置发现后textview的排版参差不齐,那么请参照以下解决办法,这是我从ITEYE上复制过来的一篇文章,供大家参考,以...
  • stone_2323
  • stone_2323
  • 2014年12月10日 16:34
  • 2434
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SpannableString属性详解
举报原因:
原因补充:

(最多只允许输入30个字)