Spannable让文字秀起来

本文介绍如何使用SpannableString为Android TextView中的文本设置多种样式,包括背景色、字体大小、粗体斜体、删除线、下划线及插入图片等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        TextView算是Android开发中最最最最常用的控件之一了,有时候根据项目的需求,我们需要给一个TextView中的显示文本设置不同的样式。比如   "如果卖家在 06天22时16分 内处理 微笑 系统自动退还给你"  这段文本需要显示在一个TextView中,而且有的字颜色不同大小不一,还有背景颜色下划线删除线粗体斜体等,甚至我们还需插入图片惊恐。那么对于项目经理这种形形色色的需求,我们解决方案是什么呢?其实方法有很多种,我们就使用Spannable类下的SpannableString来显示复合文本,可以通过它给文本设置各种各样的样式,下面我们就来看看SpannableString的一些常见用法。


一、效果图

    

                                                   

二、详细用法

       首先初始化一个TexView,定义一个String的字符串,然后用Spannable对文字进行处理,最后把文本显示在Text View上

      

        mText = (TextView) findViewById(R.id.text);

        String time = "06天22时16分";
        Spannable wordtoSpan = new SpannableString("如果卖家在"+time+"内未处理,系统将自动退还给你.");
        /**
         * 文字背景颜色
         */
        BackgroundColorSpan span = new BackgroundColorSpan(Color.YELLOW);
        wordtoSpan.setSpan(span, 0, 5, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
        /**
         * 字体大小
         */
        AbsoluteSizeSpan span1 = new AbsoluteSizeSpan(36);
        wordtoSpan.setSpan(span1, 5, 14, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
        /**
         * 粗体,斜体
         */
        StyleSpan span2 = new StyleSpan(Typeface.BOLD_ITALIC);
        wordtoSpan.setSpan(span2, 15, 18, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
        /**
         * 删除线
         */
        StrikethroughSpan span3 = new StrikethroughSpan();
        wordtoSpan.setSpan(span3, 19, 21, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
        /**
         * 下划线
         */
        UnderlineSpan span4 = new UnderlineSpan();
        wordtoSpan.setSpan(span4, 22, 27, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
        /**
         * 字体颜色
         */
        wordtoSpan.setSpan(new ForegroundColorSpan(Color.BLUE), 5, 14, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
        wordtoSpan.setSpan(new ForegroundColorSpan(Color.RED), 19, 21, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
        /**
         * 图片
         */
        Drawable d = getResources().getDrawable(R.mipmap.ic_launcher);
        d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());
        ImageSpan span5 = new ImageSpan(d, ImageSpan.ALIGN_BASELINE);
        wordtoSpan.setSpan(span5, 18, 19, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

        mText.setText(wordtoSpan);


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值