Android字体设置

在Android开发中因为某些视觉特效方面可能需要更换字体, 例如多看阅读就全部采用应用内部自带的字体, 这种方式在阅读应用一般常见. 少数特效字体可以采用图片的形式但是字体有时候比图片体积更小, 一个标准的英语字体可以十多kb, 且字体可以根据需求剔除多余语言支持, 也可以自定义字体的内容, 不仅体积极小而且无需考虑屏幕适配的问题.

默认字体

Android默认支持三种字体

  1. monospace
  2. sans
  3. serif

Android默认的所有支持显示文字的控件都支持字体替换

在xml布局文件中android:typeface属性更换字体

代码更改

这里需要用到TextView的setTypeface()

1
void setTypeface (Typeface tf)

示例:

1
2
3
4
5
6
7
8
9
TextView textView = (TextView) findViewById(R.id.tv);
textView.setTypeface(Typeface.DEFAULT_BOLD); // 默认加粗字体
/*
DEFAULT
DEFAULT_BOLD
MONOSPACE
SANS_SERIF
SERIF
*/

Typeface

前面用到过的Typeface类需要仔细介绍下, 这个类用于设置字体的样式和规格. 支持自定义字体.

Typeface并不提供构造方法, 只能通过以下静态方法直接创建对象.

基础

1
Typeface defaultFromStyle (int style)

创建

create方法直接创建一个Typeface对象, 提供字体和样式的选择.

1
2
3
4
5
Typeface create (Typeface family, // 可以为null, 为null时默认字体
int style) // Typeface本身提供int常量: 正常/ 粗体/ 斜体/ 斜体和粗体
Typeface create (String familyName, // 字体名称, 必须为我提到的三种样式
int style) //

Asset

通过获取应用的Asset文件下的字体文件来创建Typeface对象

1
2
Typeface createFromAsset (AssetManager mgr,
String path)

File

通过文件对象File获取字体并创建对象

1
2
3
Typeface createFromFile (File path)
Typeface createFromFile (String path)

其他方法

以下方法并不是static

1
2
3
int getStyle () // 获取当前Typeface对象采用的字体样式
boolean isBold () // 判断是否粗体
boolean isItalic () // 判断是否斜体