Android修改自己程序字體的方法詳解
1、在Android XML文件中設(shè)置字體
可以采用android:typeface,例如android:typeface=”monospace”。在這里例子中我們?cè)贏ctivity中對(duì)android:text=”Hello, World! 您好”分別進(jìn)行了四種顯示方式,依次為“Sans”,“serif”,“monospace”和系統(tǒng)缺省方式(經(jīng)試驗(yàn)缺省采用采用sans)。英文字體有差異,貌似中文字體沒有差異。XML文件如下:
<?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>
… …類同,依次設(shè)置兩個(gè)TableRow,分別將sans 修改為serif,monospace … …
<TableRow>
<TextView android:text=”custom:” …. />
<TextView android:id=”@+id/c12_custom”
android:text=”Hello, World! 您好”
android:textSize=”20sp” />
</TableRow>
</TableLayout>
2、使用其他字體
1)將新字體的TTF文件copy到assets/fonts/目錄下面,例如我們將“*.ttf”copy了過去。
2)我們需要將widget設(shè)置為該字體,比較遺憾的是,不能直接在XML文件中進(jìn)行,需要編寫源代碼。
TextView tv = (TextView)findViewById(R.id.c12_custom);
//從assert中獲取有資源,獲得app的assert,采用getAserts(),通過給出在assert/下面的相對(duì)路徑。在實(shí)際使用中,字體庫可能存在于SD卡上,可以采用createFromFile()來替代createFromAsset。
Typeface face = Typeface.createFromAsset (getAssets() , “fonts/timesi.ttf” );
tv.setTypeface (face);
我在模擬器中先后導(dǎo)入華文行楷的字體,大約4M,但是系統(tǒng)無法識(shí)別出該字體,沒有顯示,然后嘗試使用英文字體timesi.ttf,正常。因此Android并非和所有的TTF字體都能兼容,尤其在中文特殊字體的支持會(huì)存在問題,對(duì)于不兼容的字體,Android不出報(bào)錯(cuò),只是無法正常顯示。一般而言我們都會(huì)使用系統(tǒng)缺省提供的字體。
對(duì)于華文行楷字體,我們一開始使用的文件是中文名字,出現(xiàn)報(bào)錯(cuò),后來我們將之改為全小寫的英文名稱就不會(huì)出錯(cuò),所以在文件命名上需要注意。
3、一些注意
使用其他字庫,都會(huì)消耗程序的空間,這是要非常注意的。而且這些字庫有時(shí)并不能完全提供你所需要的文字。
舉個(gè)例子,省略方式。當(dāng)文字太多的時(shí)候,可以通過省略號(hào)省略后面的內(nèi)容,省略號(hào)是使用“…”作為一個(gè)字體,可通過android:ellipsize屬性進(jìn)行設(shè)置。如果我們需要使用省略功能,需要確保字體具有省略號(hào)。此外,為了保證長度的一直,Android會(huì)進(jìn)行填充處理,除了將一個(gè)字符更換為省略符合外,后面的字符將更換為一個(gè)特殊的Unicode字符,‘ZERO WIDTH NO-BREAK SPACE' (U+FEFF)。這個(gè)字符并占用任何可視的位置,但是保障了string具有同樣的長度。不是所有的字體都支持這個(gè)特殊的字符,可能會(huì)引發(fā)一些亂碼現(xiàn)象。
Android是支持國際語言的,但是我們?nèi)孕枰獙?duì)custom的字體小心處理。
相關(guān)文章
Android實(shí)現(xiàn)斷點(diǎn)多線程下載
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)斷點(diǎn)多線程下載,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-12-12Android仿微信右上角點(diǎn)擊加號(hào)彈出PopupWindow
這篇文章主要為大家詳細(xì)介紹了Android仿微信右上角點(diǎn)擊加號(hào)彈出PopupWindow,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-04-04通過實(shí)例簡單講解Android App中的Activity組件
這篇文章主要介紹了通過Android App中的Activity組件,包括Activity的定義和繼承以及啟動(dòng)等基本知識(shí),需要的朋友可以參考下2016-04-04Android 無障礙全局懸浮窗實(shí)現(xiàn)示例
本文主要介紹了Android 無障礙全局懸浮窗實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06詳解Android應(yīng)用main函數(shù)的調(diào)用
Android常識(shí),App主線程初始化了Looper,調(diào)用prepare的地方是ActivityThread.main函數(shù)。問題來了,App的main函數(shù)在哪兒調(diào)用,下面我們來一起學(xué)習(xí)一下吧2019-06-06Android長按imageview把圖片保存到本地的實(shí)例代碼
本文通過代碼給大家介紹了Android長按imageview把圖片保存到本地的實(shí)現(xiàn)方法,代碼簡單易懂,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧2017-12-12Android主項(xiàng)目與Module中R類的區(qū)別詳解
這篇文章主要給大家介紹了關(guān)于Android主項(xiàng)目與Module中R類的區(qū)別的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)各位Android開發(fā)者們具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2018-02-02Android解決viewpager嵌套滑動(dòng)沖突并保留側(cè)滑菜單功能
這篇文章主要介紹了 解決viewpager嵌套滑動(dòng)沖突,并保留側(cè)滑菜單功能,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-06-06