SpannableString

基础

        它常和TextView连用,用于在同一段文字中进行不同的操作、显示。主要是通过setSpan()方法进行操作。参考:http://hunankeda110.iteye.com/blog/1420470

常用方法

        setSpan(Object what, int start, int end, int flags):第二个参数指字符串中起始字符的下标,第三个参数是结束下标。第四个参数表示起始、终止下标是否包含在内,它的取值为SpannableString.SPAN_*。

常用子类

        setSpan()第一个参数虽然是Object类型的,但是一般取CharacterStyle、ParagraphStyle、TextWatcher与SpanWatcher的子类。

        1,ForegroundColorSpan:设置字体颜色。

        2,ClickableSpan:设置文字点击,重写其中的onClick()并在onClick()中处理点击事件。使用该类时,相应的TextView必须设置setMovementMethod(LinkMovementMethod.getInstance())。在默认时,可点击部分有下划线,或者想自定义点击事件,只需要重写ClickableSpan中的两个方法即可,如下:

            @Override
            public void onClick(View widget) {//自定义点击事件的处理
                ToastUtils.toastDebug("clik", LoginActivity.this);
            }

            @Override
            public void updateDrawState(TextPaint ds) {
                ds.setColor(Color.RED);//设置可点击文件的颜色
                ds.setUnderlineText(false);//设置是否有下划线
            }
        第一个方法为自定义点击事件的处理。其余的见注释。

        3,URLSpan:打开网页或者打电话等。它是ClickableSpan的子类,自己处理了点击事件,源码如下:

    @Override
    public void onClick(View widget) {
        Uri uri = Uri.parse(getURL());
        Context context = widget.getContext();
        Intent intent = new Intent(Intent.ACTION_VIEW, uri);
        intent.putExtra(Browser.EXTRA_APPLICATION_ID, context.getPackageName());
        context.startActivity(intent);
    }
从中可以看出它是打开了新的activity。使用时也需要setMovementMethod(LinkMovementMethod.getInstance())

        4,StyleSpan:字体样式,如用来设置字体加粗倾斜等。构造方法为StyleSpan(Typeface.*)。
        5,BackgroundColorSpan:设置指定区域的背景色。

        6,ImageSpan:图片。常用来在文字某一地方旋转一图片,形成类似于文字环绕的效果。此方法有一弊端:图片的宽高没办法修改,而且图片只占一行。示例如下:

		TextView tv = (TextView) findViewById(R.id.tv_title);
		SpannableString ss = new SpannableString(
				"人生fd1243a这是fafda本项目是一个模仿Android微信、云播雷达扫描动画效果的小例子,点击中间的黑色圆圈开始扫描动画,再次点击复位,需要这种效果的朋友可以自己下载看一下,因为是动画效果所以截的静态图有点变形,项目编译版本4.4.2默认编码GBK 源码包下载地址以及运行截图。 【点击这里】fdsafsdafdasfsdfdsf");
		ss.setSpan(new ImageSpan(this, R.drawable.ic_launcher),
				ss.length() / 2 - 30, ss.length() / 2 - 10,
				SpannableString.SPAN_INCLUSIVE_INCLUSIVE);
		tv.setText(ss);

        7,AbsoluteSizeSpan:设置字体的绝对大小。 如果无第二个参数或者第二个参数为false,那么一个参数的单位是px;否则为dp。 

        8,TyepfaceSpan(Typeface.*):设置字体样式。如:粗体、斜体等

        9,RelativeSizeSpan:设置字体的相对大小。设置字体大小(相对值,单位:像素) 参数表示为默认字体大小的多少倍

        10,UnderlineSpan:下划线

        11,StrikethroughSpan:删除线

        12,SuperscriptSpan:上标;SubscriptSpan:下标

        13,ScaleXSpan:字体在x轴上拉伸多少倍










  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值