標籤:等等 替換 不能 衝突 ali 調整 mono nts 一起
一、開篇
因為 Android 字型相關的內容還比較多的。有時候其實我們只需要調整一下屬性就可以滿足設計師的需求,或者是一個退後的方案(畢竟有發版的時間卡住了),有一些效果可以大概滿足需求。
那麼本文就先介紹一下再 Android 下原生內建的一些字型的一些基本概念和使用。
需要注意的是,內建的一些字型只對英文有效。
二、Android 的預設字型
Android 系統預設使用的是一款叫做 Robote 的字型。Robote 本身就是 Google 自己的字型格式,Android 和 Chrome 作業系統上,預設都會使用 Robote 字型,並且也是 Google 視覺語言推薦的字型。
想要瞭解更多關於 Robote 的內容,可以去 Google 的網站上查看。
https://fonts.google.com/specimen/Roboto
正常來說,Robote 就已經提供了多種的選擇,例如:粗細、斜體 等等。但是通常它並不能滿足我們設計師的需要。
接下來看看當我們想要使用 Android 內建的一些字型的時候,我們需要使用哪些屬性。
三、哪些屬性可以影響字型
Android 本身已經提供了一些修改字型樣式的屬性和方法。
當你想要修改字型的時候,你將面對三個屬性,它們都有對應的 Java 方法。
- android:textStyle
- android:typeface
- android:fontFamily
下面來分別詳細的說明這幾個屬性。
3.1 android:textStyle
textStyle
主要用於設定一些字型的樣式,它是對所有的字型都生效的。也就是說哪怕你替換了字型,依然可以使用 textStyle
來修飾它的樣式。textStyle 本身支援的可選項有 normal|bold|italic
,它們也非常的好理解,就是普通|粗體|斜體
。
可以看到,字型是不受 textStyle
影響的,這裡影響的只有它的樣式。
3.2 android:typeface
typeface
可以用於設定一些預設的字型,它可選的屬性有 normal|sans|serif|monospace
等。normal 和 sans 的字型其實是一樣的,serif 是一個帶襯線的字型,而 nonospace 是等寬字型。
光這樣說,其實也無法理解它們,直接上比較能說明問題。
可以看到 serif 在預設的字型上,增加了襯線。而 nonospace 限制了每個字元的寬度,讓它們達到一個等寬的效果。
等寬其實很好理解,襯線到底是什麼意思?這裡引用維基百科的一張圖,就能很直觀的說明問題。
襯線其實就是字型邊緣的那一點點小啾啾。
3.3 android:fontFamily
fontFamily
看著像是對 typeface
的一次加強,從它的可選項就能看出來,它更細緻的區分了字型的樣式。
fontFamily
的可選項還是很多的,這裡就不一一列舉了。不過需要注意,有一些字型的設定是有版本限制的。
例如:sans-serif-medium
是需要 Android 5.0 的版本才支援的。
下面直接舉幾個例子看看效果了:
需要注意的是,如果同時配置了 typeface
和 fontFamily
,將使用 fontFamily
配置的字型。
而除了 typeface
和 fontFamily
會有衝突之外,它們倆都是可以配合 typeStyle
屬性一起使用的,也就是說,這裡配置的字型,都是可以再加粗或者加斜體。
Android為TV端助力:(轉載)修改TextView字型樣式