Android TextView设置字体风格

转载 2012年03月29日 13:54:07

在开发应用过程中经常会遇到显示一些不同的字体风格的信息犹如默认的LockScreen上面的时间和充电信息。对于类似的情况,可能第一反应就是用不同的多个TextView来实现,对于每个TextView设置不同的字体风格以满足需求。

这里推荐的做法是使用Android.text.*;和android.text.style.*;


下面的组件来实现RichText:也即在同一个TextView中设置不同的字体风格。对于某些应用,比如文本编辑,记事本,彩信,短信等地方,还必须使用这些组件才能达到想到的显示效果。

主要的基本工具类有Android.text.Spanned; android.text.SpannableString; android.text.SpannableStringBuilder;使用这些类来代替常规String。SpannableString和SpannableStringBuilder可以用来设置不同的Span,这些Span便是用于实现Rich Text,比如粗体,斜体,前景色,背景色,字体大小,字体风格等等,android.text.style.*中定义了很多的Span类型可供使用。

这是相关的API的Class General Hierarchy:

因为Spannable等最终都实现了CharSequence接口,所以可以直接把SpannableString和SpannableStringBuilder通过TextView.setText()设置给TextView。

使用方法
当要显示Rich Text信息的时候,可以使用创建一个SpannableString或SpannableStringBuilder,它们的区别在于SpannableString像一个String一样,构造对象的时候传入一个String,之后再无法更改String的内容,也无法拼接多个SpannableString;而SpannableStringBuilder则更像是StringBuilder,它可以通过其append()方法来拼接多个String:

SpannableString word = new SpannableString("The quick fox jumps over the lazy dog"); 
 
SpannableStringBuilder multiWord = new SpannableStringBuilder(); 
multiWord.append("The Quick Fox"); 
multiWord.append("jumps over"); 
multiWord.append("the lazy dog"); 


创建完Spannable对象后,就可以为它们设置Span来实现想要的Rich Text了,常见的Span有:

AbsoluteSizeSpan(int size) ---- 设置字体大小,参数是绝对数值,相当于Word中的字体大小
RelativeSizeSpan(float proportion) ---- 设置字体大小,参数是相对于默认字体大小的倍数,比如默认字体大小是x, 那么设置后的字体大小就是x*proportion,这个用起来比较灵活,proportion>1就是放大(zoom in), proportion<1就是缩小(zoom out)

ScaleXSpan(float proportion) ---- 缩放字体,与上面的类似,默认为1,设置后就是原来的乘以proportion,大于1时放大(zoon in),小于时缩小(zoom out)
BackgroundColorSpan(int color) ----背景着色,参数是颜色数值,可以直接使用Android.graphics.Typeface里面定义的常量,如Typeface.BOLD,Typeface.ITALIC等等。
StrikethroughSpan----如果设置了此风格,会有一条线从中间穿过所有的字,就像被划掉一样
对于这些Sytle span在使用的时候通常只传上面所说明的构造参数即可,不需要设置其他的属性,如果需要的话,也可以对它们设置其他的属性。
SpannableString和SpannableStringBuilder都有一个设置上述Span的方法:

    /**
     * Set the style span to Spannable, such as SpannableString or SpannableStringBuilder
     * @param what --- the style span, such as StyleSpan
     * @param start --- the starting index of characters to which the style span to apply
     * @param end --- the ending index of characters to which the style span to apply
     * @param flags --- the flag specified to control
     */ 
    setSpan(Object what, int start, int end, int flags); 

 

其中参数what是要设置的Style span,start和end则是标识String中Span的起始位置,而 flags是用于控制行为的,通常设置为0或Spanned中定义的常量,常用的有:

Spanned.SPAN_EXCLUSIVE_EXCLUSIVE --- 不包含两端start和end所在的端点

Spanned.SPAN_EXCLUSIVE_INCLUSIVE --- 不包含端start,但包含end所在的端点
Spanned.SPAN_INCLUSIVE_EXCLUSIVE --- 包含两端start,但不包含end所在的端点
Spanned.SPAN_INCLUSIVE_INCLUSIVE--- 包含两端start和end所在的端点
这里理解起来就好像数学中定义区间,开区间还是闭区间一样的。这里要重点说明下关于参数0,有很多时候,如果设置了上述的参数,那么Span会从start应用到Text结尾,而不是在start和end二者之间,这个时候就需要使用Flag 0。



转:http://www.linuxeden.com/html/develop/20111013/114891.html

Android TextView设置字体风格

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

Android在一个TextView设置不同样式的文字

在我们项目开发中,经常需要在设置一些文字变大或者颜色突出使得用户更加关注该内容,诸如: 当让有童鞋或许就弄三个TextView进行显示,当然这样也能实现,但是对于一名程序员来说,这是很low的逼格。...
  • u010899138
  • u010899138
  • 2016年11月10日 16:00
  • 729

【Android---项目中】TextView设置字体样式及粗细

通过布局设置: android:textStyle="bold" android:typeface="sans" 在Android SDK中使用Typeface...
  • tablle
  • tablle
  • 2016年07月01日 18:23
  • 21838

Android 中怎么设置全局自定义字体样式

1.首先要先知道Android中TextView设置字体样式的方法。 textView.setTypeface();// 设置字体样式 如果要自定义字体样式,先在工程里新建一个assets目录...
  • qq_30740239
  • qq_30740239
  • 2016年12月05日 18:35
  • 3291

Android TextView 丰富多彩的字体样式代码

[java] view plaincopy   import java.io.IOException;      import org.xmlpull.v1.XmlPullParse...
  • dreamkid0924
  • dreamkid0924
  • 2016年11月22日 13:44
  • 423

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

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

安卓开发--textView的字体样式设置(设置宋体,微软雅黑等)

这是我的第一篇博客,如果有啥不好的地方请多直接! 最近项目中出现把字体设置成宋体,微软雅黑,黑体,楷体等的需求; 度娘发现Android系统默认支持三种字体,分别为:“sans”, “serif”...
  • tubinbin5201314
  • tubinbin5201314
  • 2015年12月10日 11:27
  • 17105

TextView设置自定义字体样式

  • 2016年04月15日 16:41
  • 19.96MB
  • 下载

TextView自定义字体,风格,超链接等效果

  • 2014年07月02日 18:43
  • 4.99MB
  • 下载

Android—自定义TextView字体!

两种方法: 方法一: 在assets目录下新建目录fonts,然后存放自己的字体库,我这里是微软雅黑weiruanyahei.ttf。 TextView tv; Typeface tf2 ...
  • weiguishan
  • weiguishan
  • 2015年06月29日 09:55
  • 2466
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android TextView设置字体风格
举报原因:
原因补充:

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