安卓系统如何使用自定义字体?

15
我想在Android应用程序中使用自定义字体,但是使用自定义字体似乎很麻烦!可以通过将字体添加到每个TextView中以编程方式设置自定义字体->需要大量样板代码。我可以创建一个新类CustomTextView扩展TextView并在构造函数中添加setTypeface->不再有关xml上下文的属性帮助。
是否有其他设置自定义字体的方法?通过XML,样式,主题?
提前感谢您!
附言:有没有可能通过XML设置下划线?

你看过样式吗?http://developer.android.com/guide/topics/ui/themes.html - Mohit Deshpande
是的,但我没有找到任何有用的东西。下划线也是一样。似乎必须通过编程来解决它。 - GabrielWeis
更改应用程序的字体真是一件痛苦的事情。我正在尝试创建一个样式,通过继承来更改TextAppearance样式的字体类型值,但问题在于如何访问位于/assets/fonts下的字体。我无法弄清楚如何在我的样式xml中访问ttf文件。 - erkangur
可能是 https://dev59.com/W3A65IYBdhLWcg3wvxeE 的重复问题。 - Drahakar
通过XML实现下划线通常是在包含将分配给TextView的文本的字符串资源中添加<u>标记来实现的。然而,我遇到了一些情况,其中使用自定义字体阻止了这些标记的工作,使得使文本(或其中一部分)带下划线的唯一方法是通过编程使用SpannableStringUnderlineSpan。请参见https://dev59.com/zmkw5IYBdhLWcg3wQoWm#10019093,了解如何使用这些类的示例。 - Giulio Piancastelli
2个回答

12

使用此代码更改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文件并将其放置在assets文件夹内的fonts文件夹中。


2
你显然没有理解这个问题。 - Marty Miller
你能帮我吗?如果我想在“textview”上应用来自外部存储的字体,该怎么做? - Prince Dholakiya

6
你可以在assets/fonts下添加自定义字体,然后使用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,但如果您需要,扩展以支持其他小部件类型也很容易。

我该如何在运行时通过活动或片段设置字体? - Jayesh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接