从字体资源id创建字体

szi*_*qui 31 fonts android android-typeface android-collapsingtoolbarlayout

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

我知道字体目录应该是资产,但在我的情况下,我有一个现有的字体资源目录,所以我认为资产管理器将从字体资源目录读取,但我错了.我正在创建Typeface来为collapsingToolbarLayout设置自定义字体.

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

szi*_*qui 78

这很有效

Typeface typeface = ResourcesCompat.getFont(this, R.font.app_font);
Run Code Online (Sandbox Code Playgroud)

在@Eselfar的教程链接中找到了这个

  • 首先,当我发布这个时,我不知道它会帮助这么多人。其次,悬而未决的问题在 SO 上一直处于陈旧状态,因此告诉社区是什么解决了您的问题并因此结束您的问题是一个很好的做法。最后,链接将来可能会断开,因此从长文章中发布相关行总是有帮助的,显然不是得分的手段。*这是一个社区而不是比赛*,所以停止假设并做一些事情来帮助人们。 (8认同)
  • 我想我已经很清楚地解释了自己,即使我不需要。如果你对它不满意,你可以在元数据上提出问题,mods 会告诉你正确的行为是什么。但在此之前,请阅读 QnA 的社区指南,并告诉他们您认为我违反了哪些指南。评论部分不是为了文字战争。 (7认同)

Jor*_*sys 18

如果要创建TypeFace存储在assets文件夹中的字体,

在此输入图像描述

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

Typeface typeface =  Typeface.createFromAsset(getAssets(),"app_font.ttf");
Run Code Online (Sandbox Code Playgroud)

您可以使用存储在/font文件夹中的字体的资源ID创建字体,如下所示:

Typeface typeface = ResourcesCompat.getFont(this, R.font.app_font);
Run Code Online (Sandbox Code Playgroud)

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

在此输入图像描述

  • OP 询问的是 res 文件夹中的字体,而不是资产 (5认同)