深度解析Android中字型設定

來源:互聯網
上載者:User

1、在Android XML檔案中設定字型

可以採用Android:typeface,例如android:typeface=”monospace”。在這裡例子中我們在Activity中對android:text=”Hello, World! 您好”分別進行了四種顯示方式,依次為“Sans”,“serif”,“monospace”和系統預設方式經實驗預設採用採用sans)。英文字型有差異,貌似中文字型沒有差異。XML檔案如下:

java代碼:

 
  1. <?xml version=”1.0″ encoding=”utf-8″?>   
  2. <TableLayout … … android:stretchColumns = “1″> 
  3. <TableRow> 
  4. <TextView android:text=”sans:”   
  5. android:layout_marginRight=”4px”   
  6. android:textSize=”20sp” /> 
  7. <TextView android:text=”Hello, World! 您好”  
  8. android:typeface =”sans” <!– android:typeface用於指定字型–>   
  9. android:textSize=”20sp” /> 
  10. </TableRow> 
  11. … …類同,依次設定兩個TableRow,分別將sans 修改為serif,monospace … …   
  12. <TableRow>   
  13. <TextView android:text=”custom:” …. />   
  14. <TextView android:id=”@+id/c12_custom”   
  15. android:text=”Hello, World! 您好”   
  16. android:textSize=”20sp” />   
  17. </TableRow>   
  18. </TableLayout> 

2、使用其他字型

1)將新字型的TTF檔案copy到assets/fonts/目錄下面,例如我們將“*.ttf”copy了過去。

2)我們需要將widget設定為該字型,比較遺憾的是,不能直接在XML檔案中進行,需要編寫原始碼。

java代碼:

 
  1. TextView tv = (TextView)findViewById(R.id.c12_custom);  
  2. //從assert中擷取有資源,獲得app的assert,採用getAserts(),通過給出在assert/下面的相對路徑。在實際使用中,字型庫可能存在於SD卡上,可以採用createFromFile()來替代createFromAsset。   
  3. Typeface face = Typeface.createFromAsset (getAssets() , “fonts/timesi.ttf” );  
  4. tv.setTypeface (face); 

我在模擬器中先後匯入華文行楷的字型,大約4M,但是系統無法識別出該字型,沒有顯示,然後嘗試使用英文字型timesi.ttf,正常。因此Android並非和所有的TTF字型都能相容,尤其在中文特殊字型的支援會存在問題,對於不相容的字型,Android不出報錯,只是無法正常顯示。一般而言我們都會使用系統預設提供的字型。
對於華文行楷字型,我們一開始使用的檔案是中文名字,出現報錯,後來我們將之改為全小寫英文名稱就不會出錯,所以在檔案命名上需要注意。

3、一些注意

使用其他字型檔,都會消耗程式的空間,這是要非常注意的。而且這些字型檔有時並不能完全提供你所需要的文字。
 舉個例子,省略方式。當文字太多的時候,可以通過省略符號省略後面的內容,省略符號是使用“…”作為一個字型,可通過android:ellipsize屬性進行設定。如果我們需要使用省略功能,需要確保字型具有省略符號。此外,為了保證長度的一直,Android會進行填充處理,除了將一個字元更換為省略符合外,後面的字元將更換為一個特殊的Unicode字元,‘ZERO WIDTH NO-BREAK SPACE’ (U+FEFF)。這個字元並佔用任何可視的位置,但是保障了string具有同樣的長度。不是所有的字型都支援這個特殊的字元,可能會引發一些亂碼現象。

Android學習筆記:Activity跳轉

Android開發:Activity之間的傳值

Android SDK 1.6之下讀取手機連絡人

Android應用開發教程:兩個啟動並執行Activity之間的通訊

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.