如何更改TextView上的字体?
如何更改 TextView 中的字体(默认显示为 Arial)?如何将其更改为 Helvetica
?
How to change the font in a TextView
, as default it's shown up as Arial? How to change it to Helvetica
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(17)
最佳做法是使用 Android 支持库版本 26.0.0 或更高版本。
第 1 步:添加字体文件
例如,当字体文件为helvetica_neue.ttf时,将生成R.font.helvetica_neue
第 2 步:创建字体系列
例如:
第 3 步:使用它
在 xml 布局中:
或将字体添加到样式:
有关更多示例,您可以遵循文档:
Best practice is to use Android Support Library version 26.0.0 or above.
STEP 1: add font file
For example, when font file will be helvetica_neue.ttf that will generates R.font.helvetica_neue
STEP 2: create font family
For example:
STEP 3: use it
In xml layouts:
Or add fonts to style:
For more examples you can follow documentation:
它有点旧,但我对 CustomFontLoader 类做了一些改进,我想分享它,这样它会有所帮助。只需使用此代码创建一个新类即可。
然后只需在文本视图上使用此代码:
It's a little old, but I improved the class CustomFontLoader a little bit and I wanted to share it so it can be helpfull. Just create a new class with this code.
Then just use this code on you textview:
我终于找到了一个非常简单的解决方案。
在应用级gradle中使用这些支持库,
然后在res中创建一个名为“font”的目录strong> 文件夹
之后,从 xml 引用该字体,如下所示
<前><代码> <按钮
android:id="@+id/btn_choose_employee"
机器人:layout_width =“140dp”
安卓:layout_height =“40dp”
android:layout_centerInParent="true"
android:background="@drawable/rounded_red_btn"
android:onClick="btnEmployeeClickedAction"
android:text="@string/searching_jobs"
机器人:textAllCaps =“假”
android:textColor="@color/white"
android:fontFamily="@font/times_new_roman_test"
>>
在本例中,times_new_roman_test 是来自 xml 的字体 ttf 文件那个字体目录
I finally got a very easy solution to this.
use these Support libraries in app level gradle,
then create a directory named "font" inside the res folder
After that, reference that font from xml like this
In this example, times_new_roman_test is a font ttf file from that font directory
这样,您可以创建一个继承自 TextView 的 View,并在其构造函数上调用 setTypeface。
This way, you can create a View which inherits from TextView and calls setTypeface on its constructor.
从资产中获取字体并设置为所有子项
get font from asset and set to all children
添加到 attrs.xml ,
数字应该按照数组类中的顺序排列。
add to attrs.xml ,
The numbers should be in the order in array class.
Android 使用 Roboto 字体,这是一种非常漂亮的字体,具有多种不同的粗细(常规、轻、细、压缩),在高密度屏幕上看起来很棒。
检查以下链接以检查 Roboto 字体:
如何在 xml 中使用 Roboto布局
回到你的问题,如果你想更改应用程序中所有 TextView/Button 的字体,请尝试将以下代码添加到你的 styles.xml 中以使用 Roboto -light 字体:
不要忘记在 AndroidManifest.xml 中使用“AppTheme”
Android uses the Roboto font, which is a really nice looking font, with several different weights (regular, light, thin, condensed) that look great on high density screens.
Check below link to check roboto fonts:
How to use Roboto in xml layout
Back to your question, if you want to change the font for all of the TextView/Button in your app, try adding below code into your styles.xml to use Roboto-light font:
And don't forget to use 'AppTheme' in your AndroidManifest.xml
也许更简单一些:(
请注意,此代码未经测试,但一般来说,这种方法应该可以很好地工作。)
Maybe something a bit simpler:
(Note this code is untested, but in general this approach should work well.)
Kotlin 扩展函数
Kotlin extension function
首先,默认不是 Arial。默认为 Droid Sans。
其次,要更改为不同的内置字体,请在布局 XML 中使用
android:typeface
或在 Java 中使用setTypeface()
。第三,Android中没有Helvetica字体。内置选项包括 Droid Sans (
sans
)、Droid Sans Mono (monospace
) 和 Droid Serif (serif
)。虽然您可以将自己的字体与应用程序捆绑在一起并通过setTypeface()
使用它们,但请记住字体文件很大,并且在某些情况下需要许可协议(例如,Helvetica,一种 Linotype 字体)。编辑
继ICS之后,android包含了Roboto字体样式,
了解更多 Roboto
编辑 2
First, the default is not Arial. The default is Droid Sans.
Second, to change to a different built-in font, use
android:typeface
in layout XML orsetTypeface()
in Java.Third, there is no Helvetica font in Android. The built-in choices are Droid Sans (
sans
), Droid Sans Mono (monospace
), and Droid Serif (serif
). While you can bundle your own fonts with your application and use them viasetTypeface()
, bear in mind that font files are big and, in some cases, require licensing agreements (e.g., Helvetica, a Linotype font).EDIT
After ICS, android includes Roboto fonts style,
Read more Roboto
EDIT 2
首先下载您需要的字体的
.ttf
文件(arial.ttf
)。将其放入assets
文件夹中。 (在 asset 文件夹内创建名为 fonts 的新文件夹并将其放入其中。)使用以下代码将字体应用到您的TextView
:First download the
.ttf
file of the font you need (arial.ttf
). Place it in theassets
folder. (Inside assets folder create new folder named fonts and place it inside it.) Use the following code to apply the font to yourTextView
:您可能想要创建包含所有字体的静态类。这样,您就不会多次创建字体,这可能会严重影响性能。
只需确保您在“assets”文件夹下创建一个名为“fonts”的子文件夹即可。
执行以下操作:
这样,您就可以从应用程序中的任何位置获取字体。
You might want to create static class which will contain all the fonts. That way, you won't create the font multiple times which might impact badly on performance.
Just make sure that you create a sub-folder called "fonts" under "assets" folder.
Do something like:
This way, you can get the font from everywhere in your application.
最佳实践
TextViewPlus.java:
attrs.xml:(放置res/values的位置)
如何使用: >
希望这对您有帮助。
Best practice ever
TextViewPlus.java:
attrs.xml: (Where to place res/values)
How to use:
Hope this will help you.
上面的答案都是正确的。如果您使用该代码段,请确保在“assets”文件夹下创建一个名为“fonts”的子文件夹。
The answers above are correct. Just make sure that you create a sub-folder called "fonts" under "assets" folder if you are using that piece of code.
巩固字体创建的另一种方法...
然后在您的活动中使用...
请注意,这种带有易失性字段的双重检查锁定习惯用法仅适用于 Java 1.5+ 中使用的内存模型。
Another way to consolidate font creation...
And then to use in your activity...
Mind you, this double-checked locking idiom with the volatile field only works correctly with the memory model used in Java 1.5+.
当您的字体存储在
res/asset/fonts/Helvetica.ttf
中时,请使用以下命令:或者,如果您的字体文件存储在
res/font/helvetica.ttf
中,请使用下列:When your font is stored inside
res/asset/fonts/Helvetica.ttf
use the following:Or, if your font file is stores inside
res/font/helvetica.ttf
use the following: