第一次接触Android开发时,我被系统内置的字体家族搞晕了。明明都是英文字母,为什么有的看起来像印刷体,有的像手写体?后来才发现,Android系统自带了13种字体家族,每种都有独特的视觉特征和适用场景。这些字体不需要额外导入,直接在XML布局中就能调用,特别适合快速开发。
最常用的三大类是sans-serif(无衬线)、serif(衬线)和monospace(等宽)。简单来说,sans-serif就像超市货架上的标签——干净利落;serif像报纸上的正文——传统稳重;monospace则像代码编辑器里的文字——整齐划一。实际开发中,我习惯用sans-serif做按钮文字,serif显示长篇文章,monospace展示代码片段。
sans-serif是Android默认字体,相当于电脑上的Arial。它的笔画粗细均匀,没有装饰线,在手机屏幕上显示特别清晰。我做过对比测试,同样18sp的文字,sans-serif在小尺寸屏幕上比serif更容易辨认。常见变体包括:
xml复制<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="sans-serif-medium"
android:text="中等粗细的无衬线文本"/>
sans-serif-condensed系列是压缩版字体,在有限宽度下特别实用。有次我做商品价格列表,普通字体显示不全,换成sans-serif-condensed-light后完美解决。注意这个系列的字母间距会自动调整,不适合需要精确对齐的场景。
serif字体自带小装饰线,打印到纸上会有高级感。但在移动端要谨慎使用,特别是小字号时装饰线可能糊成一片。我推荐在以下场景使用:
xml复制<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="serif"
android:textSize="24sp"
android:text="古典风格标题"/>
monospace的特点是每个字符占用相同宽度,调试日志和代码显示必备。有次我忘了设置等宽字体,看日志时数字对不齐,排查问题多花了半小时。Android还提供了serif-monospace混合体,既有衬线的装饰性,又保持字符等宽。
cursive模拟手写效果,适合贺卡类应用。casual更接近卡通字体,我用它做过儿童应用的按钮文字。要注意这些字体不支持所有语言,中文环境下会回退到默认字体。
sans-serif-smallcaps会把小写字母转为小型大写,适合英文缩写显示。我在体育类App里用它展示球员数据:
xml复制<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="sans-serif-smallcaps"
android:text="MPG: 28.3 PTS: 22.1"/>
我一般遵循"一个界面不超过三种字体"的原则。比如电商App可以这样搭配:
textStyle="bold"在不同字体上效果差异很大。sans-serif加粗后依然清晰,但serif-monospace加粗可能导致字符粘连。实测发现sans-serif-thin加粗后的效果,反而比直接用sans-serif-medium更精致。