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

在Android中,TextView是我们最常用的用来显示文本的控件。

  一般情况下,TextView中的文本都是一个样式。那么如何对于TextView中各个部分的文本来设置字体,大小,颜色,样式,以及超级链接等属性呢?下面我们通过SpannableString的具体实例操作来演示一下。

[java] view
plain
copy

  1. //创建一个 SpannableString对象      
  2. SpannableString msp = new SpannableString("字体测试字体大小一半两倍前景色背景色正常粗体斜体粗斜体下划线删除线x1x2电话邮件网站短信彩信地图X轴综合");     
  3.           
  4.       //设置字体(default,default-bold,monospace,serif,sans-serif)    
  5.       msp.setSpan(new TypefaceSpan("monospace"), 0, 2, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);    
  6.       msp.setSpan(new TypefaceSpan("serif"), 2, 4, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);    
  7.           
  8.       //设置字体大小(绝对值,单位:像素)     
  9.       msp.setSpan(new AbsoluteSizeSpan(20), 4, 6, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);    
  10.       msp.setSpan(new AbsoluteSizeSpan(20,true), 6, 8, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  //第二个参数boolean dip,如果为true,表示前面的字体大小单位为dip,否则为像素,同上。    
  11.           
  12.       //设置字体大小(相对值,单位:像素) 参数表示为默认字体大小的多少倍    
  13.       msp.setSpan(new RelativeSizeSpan(0.5f), 8, 10, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  //0.5f表示默认字体大小的一半    
  14.       msp.setSpan(new RelativeSizeSpan(2.0f), 10, 12, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  //2.0f表示默认字体大小的两倍    
  15.           
  16.       //设置字体前景色    
  17.       msp.setSpan(new ForegroundColorSpan(Color.MAGENTA), 12, 15, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  //设置前景色为洋红色    
  18.           
  19.       //设置字体背景色    
  20.       msp.setSpan(new BackgroundColorSpan(Color.CYAN), 15, 18, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  //设置背景色为青色    
  21.        
  22.       //设置字体样式正常,粗体,斜体,粗斜体    
  23.       msp.setSpan(new StyleSpan(android.graphics.Typeface.NORMAL), 18, 20, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  //正常    
  24.       msp.setSpan(new StyleSpan(android.graphics.Typeface.BOLD), 20, 22, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  //粗体    
  25.       msp.setSpan(new StyleSpan(android.graphics.Typeface.ITALIC), 22, 24, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  //斜体    
  26.       msp.setSpan(new StyleSpan(android.graphics.Typeface.BOLD_ITALIC), 24, 27, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  //粗斜体    
  27.           
  28.       //设置下划线    
  29.       msp.setSpan(new UnderlineSpan(), 27, 30, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);    
  30.           
  31.       //设置删除线    
  32.       msp.setSpan(new StrikethroughSpan(), 30, 33, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);    
  33.           
  34.       //设置上下标    
  35.       msp.setSpan(new SubscriptSpan(), 34, 35, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);     //下标       
  36.       msp.setSpan(new SuperscriptSpan(), 36, 37, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);   //上标                
  37.           
  38.       //超级链接(需要添加setMovementMethod方法附加响应)    
  39.       msp.setSpan(new URLSpan("tel:4155551212"), 37, 39, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);     //电话       
  40.       msp.setSpan(new URLSpan("mailto:webmaster@google.com"), 39, 41, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);     //邮件       
  41.       msp.setSpan(new URLSpan("http://www.baidu.com"), 41, 43, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);     //网络       
  42.       msp.setSpan(new URLSpan("sms:4155551212"), 43, 45, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);     //短信   使用sms:或者smsto:    
  43.       msp.setSpan(new URLSpan("mms:4155551212"), 45, 47, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);     //彩信   使用mms:或者mmsto:    
  44.       msp.setSpan(new URLSpan("geo:38.899533,-77.036476"), 47, 49, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);     //地图       
  45.           
  46.       //设置字体大小(相对值,单位:像素) 参数表示为默认字体宽度的多少倍    
  47.       msp.setSpan(new ScaleXSpan(2.0f), 49, 51, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //2.0f表示默认字体宽度的两倍,即X轴方向放大为默认字体的两倍,而高度不变    
  48.             
  49.       //设置项目符号    
  50.       msp.setSpan(new BulletSpan(android.text.style.BulletSpan.STANDARD_GAP_WIDTH,Color.GREEN), 0 ,53, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //第一个参数表示项目符号占用的宽度,第二个参数为项目符号的颜色    
  51.       tv_textView.setText(msp);    
  52.       tv_textView.setMovementMethod(LinkMovementMethod.getInstance());    

时间: 2024-10-30 11:50:11

android TextView中文字通过SpannableString设置属性的相关文章

Android TextView中文字通过SpannableString设置属性用法示例_Android

本文实例讲述了Android TextView中文字通过SpannableString设置属性的方法.分享给大家供大家参考,具体如下: 在Android中,TextView是我们最常用的用来显示文本的控件. 一般情况下,TextView中的文本都是一个样式.那么如何对于TextView中各个部分的文本来设置字体,大小,颜色,样式,以及超级链接等属性呢?下面我们通过SpannableString的具体实例操作来演示一下. //创建一个 SpannableString对象 SpannableStri

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

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

Android实现TextView中文字链接的4种方式介绍及代码_Android

 Android 的实现TextView中文字链接的方式有很多种. 总结起来大概有4种: 1.当文字中出现URL.E-mail.电话号码等的时候,可以将TextView的android:autoLink属性设置为相应的的值,如 果是所有的类型都出来就是android:autoLink="all".当然也可以在java代码里 做,textView01.setAutoLinkMask(Linkify.ALL); 2.将要处理的文字写到一个资源文件,如string.xml,然后的java代码

Android实现TextView中文字链接的4种方式介绍及代码

Android 的实现TextView中文字链接的方式有很多种. 总结起来大概有4种: 1.当文字中出现URL.E-mail.电话号码等的时候,可以将TextView的android:autoLink属性设置为相应的的值,如 果是所有的类型都出来就是android:autoLink="all".当然也可以在java代码里 做,textView01.setAutoLinkMask(Linkify.ALL); 2.将要处理的文字写到一个资源文件,如string.xml,然后的java代码里

Android TextView中部分文字高亮显示

Android  TextView中部分文字高亮显示 /** * 关键字高亮显示 * * @param context 上下文 * @param text 需要显示的文字 * @param target 需要高亮的关键字 * @param color 高亮颜色 * @param start 头部增加高亮文字个数 * @param end 尾部增加高亮文字个数 * @return 处理完后的结果 */ public static SpannableString highlight(Context

android-如何改变textview中文字的间距?

问题描述 如何改变textview中文字的间距? 如题,如何改变textview中文字的间距? android:lineSpacingExtra="" 好像并没有用 解决方案 你这个是行间距 字间距是setTextScaleX 解决方案二: 你所说的是行间距,android中的textScaleX属性,可以设置textview中字体等比例的缩放,设置的值是float类型的,但是貌似不会拉大字之间的距离,你可以参考一下这篇日志,看有没有想法http://xiaxveliang.blog.

布局-android TextView中的setLayoutParam方法

问题描述 android TextView中的setLayoutParam方法 各位前辈,我最近在自学安卓编程,碰到多次 setLayoutParams函数,我对这个函数的用法感觉很模棱两可,API中是这样写 Set the layout parameters associated with this view. These supply parameters to the parent of this view specifying how it should be arranged. The

item长按监听-Android ActionBar中Action按钮怎么设置长按监听?

问题描述 Android ActionBar中Action按钮怎么设置长按监听? 如题. 或者是滑动监听,只要是和单机区分开就好,不知哪位大神以前做过这个? 解决方案 如果有按下/抬起事件,而不是只有Click事件,就可以考虑自己实现长按的功能. 否则,就只能放弃:或者,自定义按键来实现类似的功能. 解决方案二: 如果有按下/抬起事件,而不是只有Click事件,就可以考虑自己实现长按的功能. 否则,就只能放弃:或者,自定义按键来实现类似的功能.

设置TextView中文字的超链接

main.xml如下: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools