2011-04-17 141 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