Android 中文字體的設置方法和使用技巧
阿新 • • 發佈:2017-06-05
paint mono tail water 無效 ebo roi eat cep
view1.setTypeface(tf1);
(a)FontCreator字庫瀏覽軟件
(b)FontSubset大字庫化小字庫軟件
工具下載地址:http://download.csdn.net/detail/pcaxb/8972239
(b)填上數據
source font 是你的當前要切割的字體包
new font 是你要切割後的字體
char list 能夠選你當前切割的字體包
encodeing 選utf-8
AndroidClock.ttf
AndroidClock_Highlight.ttf
AndroidClock_Solid.ttf
AndroidEmoji.ttf
Clockopia.ttf
DroidNaskh-Regular.ttf
DroidNaskhUI-Regular.ttf
DroidSans-Bold.ttf
DroidSans.ttf
DroidSansArmenian.ttf
DroidSansEthiopic-Regular.ttf
DroidSansFallback.ttf
DroidSansGeorgian.ttf
DroidSansHebrew-Bold.ttf
DroidSansHebrew-Regular.ttf
DroidSansMono.ttf
DroidSerif-Bold.ttf
DroidSerif-BoldItalic.ttf
DroidSerif-Italic.ttf
DroidSerif-Regular.ttf
MTLmr3m.ttf
Roboto-Bold.ttf
Roboto-BoldItalic.ttf
Roboto-Italic.ttf
Roboto-Light.ttf
Roboto-LightItalic.ttf
Roboto-Regular.ttf
Roboto-Thin.ttf
Roboto-ThinItalic.ttf
RobotoCondensed-Bold.ttf
RobotoCondensed-BoldItalic.ttf
RobotoCondensed-Italic.ttf
RobotoCondensed-Regular.ttf
2.設置字體的相關屬性
android:textStyle="bold"能夠將英文設置成粗體, 可是不能將中文設置成粗體。
參考鏈接:
http://developer.android.com/reference/android/widget/TextView.html#attr_android%3atypeface
http://stackoverflow.com/questions/12128331/how-to-change-fontfamily-of-textview-in-android
Android TextView字體顏色等樣式具體解釋連接:http://blog.csdn.net/pcaxb/article/details/47341249
1.使用字體庫(自己定義字體的使用):當然假設字體庫和手機的不兼容獲取什麽的,可能你的中文是無效的
(1)在assets中新建文件夾fonts,把ttf字體庫考到文件夾下
(2)使用代碼
TextView view1 = (TextView) findViewById(R.id.tv1); Typeface tf1 = Typeface.createFromAsset(getAssets(), "fonts/DroidSerif-Bold.ttf");
(3)使用字體庫的問題和解決
問題:假設你的字體庫太大(xM),就會拋java.lang.RuntimeException: native typeface cannot be made
異常。當然拋這個異常不一定是字體庫大了。解決:
用到的軟件(a)FontCreator字庫瀏覽軟件
(b)FontSubset大字庫化小字庫軟件
工具下載地址:http://download.csdn.net/detail/pcaxb/8972239
操作使用
(a)打開FontSubset,執行FontSubsetGUI.exe(b)填上數據
source font 是你的當前要切割的字體包
new font 是你要切割後的字體
char list 能夠選你當前切割的字體包
encodeing 選utf-8
點擊 process
字體庫的下載鏈接(這裏的字體庫是我用FontSubset壓縮了的,很小):http://download.csdn.net/detail/pcaxb/8974239
(4)Android字體系統庫(了解)
Android System Fonts(/system/fonts):AndroidClock.ttf
AndroidClock_Highlight.ttf
AndroidClock_Solid.ttf
AndroidEmoji.ttf
Clockopia.ttf
DroidNaskh-Regular.ttf
DroidNaskhUI-Regular.ttf
DroidSans-Bold.ttf
DroidSans.ttf
DroidSansArmenian.ttf
DroidSansEthiopic-Regular.ttf
DroidSansFallback.ttf
DroidSansGeorgian.ttf
DroidSansHebrew-Bold.ttf
DroidSansHebrew-Regular.ttf
DroidSansMono.ttf
DroidSerif-Bold.ttf
DroidSerif-BoldItalic.ttf
DroidSerif-Italic.ttf
DroidSerif-Regular.ttf
MTLmr3m.ttf
Roboto-Bold.ttf
Roboto-BoldItalic.ttf
Roboto-Italic.ttf
Roboto-Light.ttf
Roboto-LightItalic.ttf
Roboto-Regular.ttf
Roboto-Thin.ttf
Roboto-ThinItalic.ttf
RobotoCondensed-Bold.ttf
RobotoCondensed-BoldItalic.ttf
RobotoCondensed-Italic.ttf
RobotoCondensed-Regular.ttf
2.設置字體的相關屬性
(1)android:fontFamily的使用方法(有較高版本號的限制)
相關屬性:sans-serif、sans-serif-light、sans-serif-condensed、sans-serif-thin、(2)android:textStyle="normal|bold|italic"
相關屬性Regular、Italic、、Bold、Bold-italic、Light、Light-italic、Thin、Thin-italic、Condensed regular、Condensed italic、Condensed bold、Condensed bold-italicandroid:textStyle="bold"能夠將英文設置成粗體, 可是不能將中文設置成粗體。
代碼設置
TextView tv = (TextView)findViewById(R.id.TextView01); tv.getPaint().setFakeBoldText(true);//使用TextPaint的仿粗體設置setFakeBoldText為true
(3)android:fontFamily與 android:typeface
相關屬性:normal、sans、serif、monospace參考鏈接:
http://developer.android.com/reference/android/widget/TextView.html#attr_android%3atypeface
http://stackoverflow.com/questions/12128331/how-to-change-fontfamily-of-textview-in-android
3.通過HTML標簽設置字體(註意有些標簽是沒有效果的):
Button btn = (Button) findViewById(R.id.bt); String source = "這僅僅是一個測試字符串,測試<b>黑體字</b>、<i>斜體字</i>、<u>下劃線</u>、<font color=‘red‘ face=‘微軟雅黑‘>紅色字</font>的顯示。<font face=‘幼圓‘ size=‘1‘ color=‘green‘>幼圓一號綠色字體</font>" + "<font face=‘宋體‘>字體</font>" + "<font face=‘微軟雅黑‘>字體</font>" + "<font face=‘宋體‘>nishiwode</font>" + "<font face=‘微軟雅黑‘>nishiwode</font>"; btn.setText(Html.fromHtml(source)); btn.setOnFocusChangeListener(this);
4.通過以下這樣的方式的沒有什麽效果
Typeface tf1 = Typeface.create("宋體", Typeface.NORMAL); Typeface tf1 = Typeface.create("sans-serif", Typeface.NORMAL);
Android 中文字體的設置方法和使用技巧