从字体资源ID创建字体类型

66

我尝试使用 Typeface.createFromAsset(getAssets(),"font/myfont.ttf"));

我知道字体目录应该在assets文件夹中,但是在我的情况下,我有一个已存在的字体资源目录,所以我认为资产管理器会从字体资源目录中读取字体,但是我错了。我正在创建Typeface来设置折叠式工具栏布局的自定义字体。

我找到了这个答案,但它要求我将字体保留在assets中。


4
我建议你跟随这个非常好的教程,了解如何使用 Android 支持库实现自定义字体。更多信息可以在这里找到。 - Eselfar
2个回答

180

这个起作用了

Typeface typeface = ResourcesCompat.getFont(this, R.font.app_font);

在 @Eselfar 的教程链接中发现了这个。


8
首先,当我发布这个问题时,我并不知道它会帮助这么多人。其次,未被解答的问题会在 Stack Overflow 上滞留很久,因此告诉社区是如何解决你的问题并且关闭你的问题是一种好的做法。最后,链接可能会在未来失效,所以从长文章中发布相关行是有帮助的,显然不是为了积分而做的。这是一个社区而不是竞争,所以停止推测,采取行动来帮助人们。 - sziraqui
7
我认为我已经解释得相当清楚了,尽管我并不需要这样做。如果您对此不满意,可以在元社区提出问题,版主会告诉您正确的行为方式。但在此之前,请阅读问答社区的社区准则,并告诉他们您认为我违反哪条指南。评论区不是用来争论的场所。 - sziraqui

43

如果你想从存储在资产文件夹中的字体创建TypeFace

enter image description here

你不需要定义目录,只需要定义字体名称:

Typeface typeface =  Typeface.createFromAsset(getAssets(),"app_font.ttf");
您可以使用存储在 /font 文件夹中的字体资源id创建字体,方法如下:
Typeface typeface = ResourcesCompat.getFont(this, R.font.app_font);

你的字体必须存储在 /font 目录中。

输入图像描述


10
OP 询问的是 res 文件夹中的字体,而不是 assets。 - gyleg5
字体类型 type = Resources.GetFont(Resource.Font.app_font); - Denis Sivtsov

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