图文并茂的android之SpannableString

先看效果图

  • 上图其实就一TextView的展示内容,如何做到?

代码实现

TextView tv = (TextView) findViewById(R.id.text_view);

        SpannableString ss = new SpannableString(
                "红色打电话斜体删除线绿色下划线图片:.蓝色背景1234567890abcdefghijklnopqrstuvwxyz");

        // 用颜色标记文本
        ss.setSpan(new ForegroundColorSpan(Color.RED), 0, 2,
        // setSpan时需要指定的 flag,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE(前后都不包括).
                Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

        // 用超链接标记文本
        ss.setSpan(new URLSpan("tel:10086"), 2, 5,
                Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

        // 用样式标记文本(斜体)
        ss.setSpan(new StyleSpan(Typeface.BOLD_ITALIC), 5, 7,
                Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

        // 用删除线标记文本
        ss.setSpan(new StrikethroughSpan(), 7, 10,
                Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

        // 用下划线标记文本
        ss.setSpan(new UnderlineSpan(), 10, 16,
                Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

        // 用颜色标记
        ss.setSpan(new ForegroundColorSpan(Color.GREEN), 10, 12,
                Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

        // 获取Drawable资源
        Drawable d = getResources().getDrawable(R.drawable.ic_launcher);
        d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());
        // 创建ImageSpan
        ImageSpan span = new ImageSpan(d, ImageSpan.ALIGN_BASELINE);
        // 用ImageSpan替换文本
        ss.setSpan(span, 18, 19, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);

        // 用蓝色背景标记文本
        ss.setSpan(new BackgroundColorSpan(Color.BLUE), 19, 23,
                Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

        // 用缩放x来标记
        ss.setSpan(new ScaleXSpan(3), 23, 29,
                Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

        // 用上标来标记
        ss.setSpan(new SuperscriptSpan(), 29, 35,
                Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

        // 用下标来标记
        ss.setSpan(new SubscriptSpan(), 35, 38,
                Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

        // 用相对大小来标记
        ss.setSpan(new RelativeSizeSpan(3), 38, 40,
                Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

        // many other
        // TODO

        // 文本设置
        tv.setText(ss);

参考链接

时间: 2024-10-10 21:08:48

图文并茂的android之SpannableString的相关文章

android中SpannableString之富文本显示效果

SpannableString其实和String一样,都是一种字符串类型,SpannableString可以直接作为TextView的显示文本,不同的是SpannableString可以通过使用其方法setSpan方法实现字符串各种形式风格的显示,重要的是可以指定设置的区间,也就是为字符串指定下标区间内的子字符串设置格式. setSpan(Object what, int start, int end, int flags)方法需要用户输入四个参数,what表示设置的格式是什么,可以是前景色.背

Android 使用SpannableString显示复合文本

http://blog.csdn.net/feizhixuan46789/article/details/10334441 http://www.th7.cn/Program/Android/201408/258951.shtml 在实际的应用开发过程中经常会遇到,在文本的不同部分显示一些不同的字体风格的信息如:文本的字体.大小.颜色.样式.以及超级链接等.一般情况下,TextView中的文本都是一个样式,对于类似的情况,可以借助SpannableString或SpannableStringBu

Android开发之SpannableString详解

在实际的应用开发过程中经常会遇到,在文本的不同部分显示一些不同的字体风格的信息如:文本的字体.大小.颜色.样式.以及超级链接等.一般情况下,TextView中的文本都是一个样式,对于类似的情况,可以借助SpannableString或SpannableStringBuilder对象来实现以上设置. SpannableString与SpannableStringBuilder都可以将某段文本设置成一个Span,在Android中,Span表示一段文本的效果,例如,链接形式.图像.带背景的文本等.只

Android TextView中文字通过SpannableString来设置超链接、颜色、字体等属

在Android中,TextView是我们最常用的用来显示文本的控件. 一般情况下,TextView中的文本都是一个样式.那么如何对于TextView中各个部分的文本来设置字体,大小,颜色,样式,以及超级链接等属性呢?下面我们通过SpannableString的具体实例操作来演示一下. res-layout-main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:and

Android开发之SpannableString具体解释

在实际的应用开发过程中常常会遇到.在文本的不同部分显示一些不同的字体风格的信息如:文本的字体.大小.颜色.样式.以及超级链接等. 普通情况下,TextView中的文本都是一个样式.对于类似的情况.能够借助SpannableString或SpannableStringBuilder对象来实现以上设置. SpannableString与SpannableStringBuilder都能够将某段文本设置成一个Span,在Android中.Span表示一段文本的效果,比如,链接形式.图像.带背景的文本等.

(四十八)Android TextView中文字通过SpannableString来设置超链接、颜色、字体等属性

1.程序结构图 2.MainActivity.java中的代码 package com.example.setlinkdemo; import java.io.IOException; import org.xmlpull.v1.XmlPullParserException; import android.app.Activity; import android.content.Intent; import android.content.res.ColorStateList; import a

Android - SpannableString或SpannableStringBuilder以及string.xml文件中的整型和string型代替

背景介绍 在开发应用过程中经常会遇到显示一些不同的字体风格的信息犹如默认的LockScreen上面的时间和充电信息.对于类似的情况,可能第一反应就是用不同的多个TextView来实现,对于每个TextView设置不同的字体风格以满足需求. 这里推荐的做法是使用android.text.*;和 android.text.style.*;下面的组件来实现RichText:也即在同一个TextView中设置不同的字体风格.对于某些应用,比如文本编辑,记事本,彩信,短信等地方,还必须使用这些组件才能达到

(转)Android TextView中文字通过SpannableString来设置超链接、颜色、字体等属性以及自定义链接到下一个Activity

在Android中,TextView是我们最常用的用来显示文本的控件. 一般情况下,TextView中的文本都是一个样式.那么如何对于TextView中各个部分的文本来设置字体,大小,颜色,样式,以及超级链接等属性呢?下面我们通过SpannableString的具体实例操作来演示一下. res-layout-main.xml 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns

浅谈android中仅仅使用一个TextView实现高仿京东,淘宝各种倒计时

今天给大家带来的是仅仅使用一个TextView实现一个高仿京东.淘宝.唯品会等各种电商APP的活动倒计时.最近公司一直加班也没来得及时间去整理,今天难得休息想把这个分享给大家,只求共同学习,以及自己后续的复习.为什么会想到使用一个TextView来实现呢?因为最近公司在做一些优化的工作,其中就有一个倒计时样式,原来开发的这个控件的同事使用了多个TextView拼接在一起的,实现的代码冗余比较大,故此项目经理就说:小宏这个就交给你来优化了,并且还要保证有一定的扩展性,当时就懵逼了.不知道从何处开始