查看: 37|回复: 0

    SpannableString的用法详解

    [复制链接]

    219

    主题

    219

    帖子

    511

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    511
    发表于 2022-1-6 15:30:36 | 显示全部楼层 |阅读模式
    SpannableString的用法详解




    SpannableString能够更简便的设置文字样式。
    知识准备:
    方法:setSpan (Object what, int start, int end, int flags) 参数说明: object what:对应的各种Span; int start:开始应用指定Span的位置,索引从0开始; int end:结束应用指定Span的位置,特效并不包括这个位置。比如如果这里数为3(即第4个字符),第4个字符不会有任何特效。 int flags:取值有如下四个 Spannable.SPAN_EXCLUSIVE_EXCLUSIVE:前后都不包括,即在指定范围的前面和后面插入新字符都不会应用新样式  Spannable.SPAN_EXCLUSIVE_INCLUSIVE:前面不包括,后面包括。即仅在范围字符的后面插入新字符时会应用新样式 Spannable.SPAN_INCLUSIVE_EXCLUSIVE:前面包括,后面不包括。 Spannable.SPAN_INCLUSIVE_INCLUSIVE:前后都包括。  
    flag的设置最后再说,这里先设为0。
    1、设置颜色
    1.png

    1. String string = "今天晚上下雨啦!";

    2. SpannableString spanColor = new SpannableString(string);

    3. spanColor.setSpan(new ForegroundColorSpan(Color.parseColor("#ff3c2a")), string.indexOf("晚上"), string.indexOf("下"), 0);

    4. mTv1.setText(spanColor);
    复制代码
    当然,也可以直接设置角标实现:

    1. String string = "今天晚上下雨啦!";

    2. SpannableString spanColor = new SpannableString(string);

    3. spanColor.setSpan(new ForegroundColorSpan(Color.parseColor("#ff3c2a")), 2, 4, 0);

    4. mTv1.setText(spanColor);
    复制代码

    2、设置背景颜色

    2.png

    代码:


    1. String string = "今天晚上下雨啦!";

    2. SpannableString spanColor = new SpannableString(string);

    3. spanColor.setSpan(new BackgroundColorSpan(Color.parseColor("#ff3c2a")), string.indexOf("晚"), string.indexOf("下"), 0);

    4. mTv1.setText(spanColor);
    复制代码
    3、设置字体大小
    3.png
    代码:


    1. String string = "今天晚上下雨啦!";

    2. SpannableString spanColor = new SpannableString(string);

    3. spanColor.setSpan(new AbsoluteSizeSpan(25), string.indexOf("晚"), string.indexOf("下"), 0);

    4. mTv1.setText(spanColor);
    复制代码
    4、设置粗斜体




    4.png


    代码:


    1. String string = "今天晚上下雨啦!";

    2. SpannableString spanColor = new SpannableString(string);

    3. spanColor.setSpan(new StyleSpan(Typeface.BOLD_ITALIC), string.indexOf("晚"), string.indexOf("下"), 0);

    4. mTv1.setText(spanColor);
    复制代码

    5、删除线

    5.png

    代码:



    1. String string = "今天晚上下雨啦!";

    2. SpannableString spanColor = new SpannableString(string);

    3. spanColor.setSpan(new StrikethroughSpan(), string.indexOf("晚"), string.indexOf("下"), 0);

    4. mTv1.setText(spanColor);
    复制代码
    6、下划线

    6.png

    代码:



    1. String string = "今天晚上下雨啦!";

    2. SpannableString spanColor = new SpannableString(string);

    3. spanColor.setSpan(new UnderlineSpan(), string.indexOf("晚"), string.indexOf("下"), 0);

    4. mTv1.setText(spanColor);
    复制代码
    7、替换图片

    7.png
    代码:


    1. String string = "今天晚上下雨啦!";

    2. SpannableString spanColor = new SpannableString(string);

    3. Drawable d = getResources().getDrawable(R.mipmap.ic_launcher);

    4. d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());

    5. ImageSpan span = new ImageSpan(d, ImageSpan.ALIGN_BASELINE);

    6. spanColor.setSpan(span, string.indexOf("晚"), string.indexOf("下"), 0);

    7. mTv1.setText(spanColor);
    复制代码

    对EditText使用SpannableString ,如果我们设置Spannable.SPAN_EXCLUSIVE_INCLUSIVE,在“晚上”前面和后面都输入文字,前面的文字没有任何效果,后面的则不同,添加上相同的Span特效,(前面不应用特效,后面应用特效),其它几个Flags参数的含义不再赘述。


    源码下载:
    SpannableStringDemo-master.zip (96.63 KB, 下载次数: 0, 售价: 3 金钱)
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    免责声明:
    1、转载或引用本网站内容须注明原网址,并标明本网站网址“源码资源网”
    2、转载或引用本网站中的署名文章,请按规定向原作者支付稿酬
    3、对于不当转载或引用本网站内容而引起的民事纷争、行政处理或其他损失,本网站不承担责任
    4、对不遵守本声明或其他违法、恶意使用本网站内容者,本网站保留追究其法律责任的权利
    5、资源部分来自网络,不保证资源的完整性,仅供学习研究,如需运营请购买正版,如有侵权请联系客服删除
    6、本站所有资源不带技术支持,下载资源请24小时内删除,如用于违法用途,或者商业用途,一律用于者承担

    QQ|手机版|小黑屋|源码资源网 ( 鲁ICP备2021043233号-3 )

    GMT+8, 2022-1-20 04:35

    邮箱:312337667@qq.com 客服QQ:312337667(工作时间:7:00~23:00)

    © Powered by Net188.com X3.4

    快速回复 返回顶部 返回列表