控制不同的文字字体
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) { /*在这里处理更改字体的程序片段*/ }