2013年3月13日----控制不同的文字字体

控制不同的文字字体

      TextView里有许多与字形相关的方法,如使用setTextSize()来改变文字大小、setTypeface()来指定使用的字体,接下来的范例有两个按钮,一个控制TextView的字体,另一个控制字体的大小。这里会用到外部资源assets文件夹,引用外部的字体文件(True Type Font),再通过Typeface类的createFromAsset方法,让TextView可通过setTypeface来顺利改变字体。

主要代码如下:

textView01.setTextSize(30);

/*必须实现在assets文件夹下创建fonts文件夹

* 并放入要使用的字体(*.ttf)

* 并提供相对路径给CreateFromAsset()来创建Typeface对象*/

textView01.setTypeface(Typeface.createFromAsset(getAssets(), "fonts/SIMKAL.TTF"));

 


       将外部字体放在assets/fonts文件夹内,就可以通过AssetsManage来引用外部资源。此处特别要留意的是,字体文件必须是符合Ture Type Font格式。否则即便程序编译时不出错,在运行时也会发生无法更改字体的情况。

       上述程序里使用了Typeface类,并使用外部字体文件来改变文字的字体。不过目前Android的版本似乎在吃吃Ture Type字体方面有些问题,即便是用了不支持的字体,Android也不会发出错误的信息,而是以Droid Sans默认字体替换,所以当遇到使用外部字体却又发现字体没有变化时,原因就是处在Android没有支持这个字体,而非程序本身发生错误。

       除了通过Typeface外,也可以通过defaultStyle来使用Andoid内置的几款字体Typeface,下面为内置的常数:

...类型...

.......常数名称......

...........概     要..........

....Value....

.........................................

Int

BOLD

 

1

0X00000001

Int

BOLD_ITALIC

 

3

0X00000003

Typeface

DEFAULT

默认NORMAL typeface对象

 

 

Typeface

DEFAULT_BOLD

默认BOLD typeface对象

 

 

Int

ITALIC

 

2

0x00000002

Typeface

MONOSPACE

NORMAL风格的默认monospace typeface

 

 

Int

NORMAL

 

0

0x00000000

Typeface

SANS_SERIF

NORMAL风格的默认sans serif typeface

 

 

Typeface

SERIF

NORMAL风格的默认serif typeface

 

 

 

除了将字体文件放入手机当中,也可以将字体以import方式导入项目资源,方法如下:

Resources.StyledAttributes resFont = getContext().obtainStyledAttributes(attrs ,        R.styleable.UnicodeTextView);

String fontName = resFont.getString(R.styleable.UnicodeTextView_font);

If(fontName != null)

{

       /*在这里处理更改字体的程序片段*/

}

 

你可能感兴趣的:(2013年3月13日----控制不同的文字字体)