从字体资源 ID 创建字体

Posted

技术标签:

【中文标题】从字体资源 ID 创建字体【英文标题】:create typeface from font resource id 【发布时间】:2018-07-19 04:09:00 【问题描述】:

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

我知道字体目录应该在资产中,但就我而言,我有一个现有的字体资源目录,所以我认为资产管理器会从字体资源目录中读取,但我错了。我正在创建字体来为 collapsingToolbarLayout 设置自定义字体。

我找到了this answer,但它要求我在资产中保留字体

【问题讨论】:

我建议你关注this very good tutorial。更多信息here 【参考方案1】:

成功了

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

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

【讨论】:

首先,当我发布此内容时,我不知道它会帮助这么多人。其次,未回答的问题在 SO 上一直陈旧,因此最好告诉社区是什么解决了您的问题,从而结束您的问题。最后,链接将来可能会断开,因此从长篇文章中发布相关行总是有帮助的,显然不是得分的手段。 这是一个社区而不是竞争,所以不要假设事情,做一些事情来帮助人们。 我想我已经很清楚地解释了自己,即使我不需要。如果你对它不满意,你可以提出关于元的问题,模组会告诉你正确的行为是什么。但在此之前,请阅读 QnA 的社区准则并告诉他们您认为我违反了哪些准则。评论部分不适合文字战争。【参考方案2】:

如果您想从存储在 assets 文件夹中的字体创建 TypeFace

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

Typeface typeface =  Typeface.createFromAsset(getAssets(),"app_font.ttf");

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

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

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

【讨论】:

OP 询问的是 res 文件夹中的字体,而不是资产

以上是关于从字体资源 ID 创建字体的主要内容,如果未能解决你的问题,请参考以下文章

java 从资源字体获取颜色:https://stackoverflow.com/questions/31590714/getcolorint-id-deprecated-on-android-6-0

Win32字体资源泄露

从Webdings字体创建系统托盘图标

Skia 如何使用 SkTypeface* CreateFromFile(const char path[]) 从资产创建字体;

游戏编程入门之测试字体输出

从html创建nsattributedstring时ios7字体大小发生变化