2011-04-17 140 views
15

我想在Android應用中使用自定義字體,但使用自定義字體似乎很痛苦? 我可以通過將程序添加到每個TextView中 - >大量樣板代碼來以編程方式設置自定義字體。我可以創建一個新類CustomTextView擴展TextView並在構造函數中添加setTypeface - >不再有xml上下文感知屬性的幫助。Android上的自定義字體

是否有另一種方法來設置自定義字體?通過XML,風格,主題?

提前致謝!

P.S.是否有可能通過XML設置下劃線?

+0

你看過風格嗎? http://developer.android.com/guide/topics/ui/themes.html – 2011-04-17 15:03:44

+0

是的,但我還沒有發現任何有用的東西。同下劃線一樣。似乎必須通過編程來解決它 – GabrielWeis 2011-05-06 08:22:06

+0

做整個應用程序範圍的字體改變真的很痛苦。我試圖通過繼承創建一個正在改變TextAppearance風格的字體值的樣式,問題是訪問位於/ assets/fonts下的字體。我無法弄清楚如何訪問我的風格xml中的ttf文件。 – erkangur 2011-07-19 11:30:34

回答

6

可以包括在資產/字體自定義字體,然後使用代碼

https://github.com/browep/AndroidCustomFontWidgets/

你可以在你的XML中指定的字體,例如

<com.github.browep.customfonts.view.FontableTextView 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:text="This is in a custom font" 
    app:font="MyFont-Bold.otf" /> 

代碼支持FontableTextView和FontableButton,但它很容易擴展到支持其他窗口小部件類型,如果你需要。

+0

如何通過活動或片段在運行時設置字體? – Jayesh 2018-01-16 07:43:00

9

使用此代碼更改字體的TextView ..從網絡

TextView newfont; 
newfont=(TextView) findViewById(R.id.textView1); 
Typeface font=Typeface.createFromAsset(getAssets(), "fonts/DejaVuSerif-Italic.ttf"); 
newfont.setTypeface(font); 
newfont.setText("This is the new font Text"); 

下載DejaVuSerif-Italic.ttf文件,並把在字體文件夾中資產文件夾。

+2

你顯然不明白這個問題。 – 2012-02-21 00:00:02