TextView中设置不同的字体属性(SpannableString实现)

转载 2013年12月03日 21:33:51

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

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



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

在Android中,TextView是我们最常用的用来显示文本的控件。   一般情况下,TextView中的文本都是一个样式。那么如何对于TextView中各个部分的文本来设置字体,大小,颜色,...
  • xiangzilv1987
  • xiangzilv1987
  • 2012年11月22日 13:58
  • 18113

Android中TextView通过SpannableString设置字体、大小、颜色、样式、超级链接

直接贴代码,不知道怎么使用的看注释吧。
  • lukejun1988
  • lukejun1988
  • 2014年05月15日 15:20
  • 10598

SpannableString--textview显示不同的颜色、样式

SpannableString TextView是用来显示文本的,有时需要给TextView中的个别字设置为超链接,或者设置个别字的颜色、字体等,那就需要用到Spannable对象,可以...
  • tlc0211
  • tlc0211
  • 2013年02月27日 14:41
  • 4834

一个TextView 设置两种字体颜色和大小

项目中用到一个需求,实现效果是这样的:     我是知识点我是知识点我是知识点我是知识点  【题】 要求这样的:1、这个化学知识点名字不固定长度 2、题子要是红色,比知识点字体小 3、要挨到化...
  • nnmmbb
  • nnmmbb
  • 2015年10月23日 11:02
  • 5126

【Android】TextView中不同大小字体如何上下垂直居中?

前言在客户端开发中,我们往往需要对一个TextView的文字的部分内容进行特殊化处理,比如加粗、改变颜色、加链接、下划线等。iOS为我们提供了AttributedString,而Android则提供了...
  • u010983881
  • u010983881
  • 2017年01月03日 16:47
  • 2921

Android_用SpannableString实现在同一个TextView中多风格的文字效果

在开发应用过程中经常会遇到显示一些不同的字体风格的信息犹如默认的LockScreen上面的时间和充电信息。对于类似的情况,可能第一反应就是用不同的多个TextView来实现,对于每个TextView设...
  • u013035016
  • u013035016
  • 2016年04月08日 15:13
  • 1258

Android中对同一个TextView设置不同字体样式

这个只是做一个笔记,详情见wad
  • u013761665
  • u013761665
  • 2014年09月28日 21:20
  • 2207

textview使用SpannableString设置文字样式后,排版参差不齐的解决办法

如果你的textview使用了SpannableString设置文字的样式,但是设置发现后textview的排版参差不齐,那么请参照以下解决办法,这是我从ITEYE上复制过来的一篇文章,供大家参考,以...
  • stone_2323
  • stone_2323
  • 2014年12月10日 16:34
  • 2434

Android 一个TextView中设置文字不同字体大小和颜色的最完整方法

在做项目的时候,经常会遇到过一行文字有两种颜色。有时候直接会想到用多个TextView来实现。今天就介绍一下更为简单的方法,用一个TextView实现。效果:这几个都实现了一行字有不同颜色,还有两个字...
  • SilenceOO
  • SilenceOO
  • 2017年08月15日 01:27
  • 1856

SpannableString 动态设置textView中字体颜色和大小

TextView是用来显示文本的,有时需要给TextView中的个别字设置为超链接,或者设置个别字的颜色、字体等,那就需要用到Spannable对象,可以借助Spannable对象实现以上设置 ...
  • jspamd
  • jspamd
  • 2013年12月28日 10:06
  • 6647
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:TextView中设置不同的字体属性(SpannableString实现)
举报原因:
原因补充:

(最多只允许输入30个字)