Android提供三種字體:「Sans」,「serif」和「monospace」。 php
一、在Android XML文件中設置字體 android
能夠採用android:typeface,例如android:typeface=」monospace」。在這裏例子中咱們在Activity中對android:text=」Hello, World! 您好」分別進行了四種顯示方式,依次爲「Sans」,「serif」,「monospace」和系統缺省方式(經試驗缺省採用採用sans)。英文字體有差別,貌似中文字體沒有差別。XML文件以下: app
<?xml version=」1.0″ encoding=」utf-8″?>
<TableLayout … … android:stretchColumns = 「1″>
<TableRow>
<TextView android:text=」sans:」
android:layout_marginRight=」4px」
android:textSize=」20sp」 />
<TextView android:text=」Hello, World! 您好」
android:typeface =」sans」 <!– android:typeface用於指定字體–>
android:textSize=」20sp」 />
</TableRow>
… …類同,依次設置兩個TableRow,分別將sans 修改成serif,monospace … …
<TableRow>
<TextView android:text=」custom:」 …. />
<TextView android:id=」@+id/c12_custom」
android:text=」Hello, World! 您好」
android:textSize=」20sp」 />
</TableRow>
</TableLayout> 字體
二、使用其餘字體
1)將新字體的TTF文件copy到assets/fonts/目錄下面,例如咱們將「*.ttf」copy了過去。 spa
2)咱們須要將widget設置爲該字體,比較遺憾的是,不能直接在XML文件中進行,須要編寫源代碼。 code
TextView tv = (TextView)findViewById(R.id.c12_custom);
//從assert中獲取有資源,得到app的assert,採用getAserts(),經過給出在assert/下面的相對路徑。在實際使用中,字體庫可能存在於SD卡上,能夠採用createFromFile()來替代createFromAsset。
Typeface face = Typeface.createFromAsset (getAssets() , 「fonts/timesi.ttf」 );
tv.setTypeface (face); xml
我在模擬器中前後導入華文行楷的字體,大約4M,可是系統沒法識別出該字體,沒有顯示,而後嘗試使用英文字體timesi.ttf,正常。所以Android並不是和全部的TTF字體都能兼容,尤爲在中文特殊字體的支持會存在問題,對於不兼容的字體,Android不出報錯,只是沒法正常顯示。通常而言咱們都會使用系統缺省提供的字體。 ip
對於華文行楷字體,咱們一開始使用的文件是中文名字,出現報錯,後來咱們將之改成全小寫的英文名稱就不會出錯,因此在文件命名上須要注意。 utf-8
順便給你們一個字體庫,去下載吧, 資源
三、一些注意
使用其餘字庫,都會消耗程序的空間,這是要很是注意的。並且這些字庫有時並不能徹底提供你所須要的文字。
舉個例子,省略方式。當文字太多的時候,能夠經過省略號省略後面的內容,省略號是使用「…」做爲一個字體,可經過android:ellipsize屬性進行設置。若是咱們須要使用省略功能,須要確保字體具備省略號。此外,爲了保證長度的一直,Android會進行填充處理,除了將一個字符更換爲省略符合外,後面的字符將更換爲一個特殊的Unicode字符,‘ZERO WIDTH NO-BREAK SPACE’ (U+FEFF)。這個字符並佔用任何可視的位置,可是保障了string具備一樣的長度。不是全部的字體都支持這個特殊的字符,可能會引起一些亂碼現象。
Android是支持國際語言的,可是咱們仍須要對custom的字體當心處理。