Android 未找到运行时异常字体资源
Android Runtime Exception font asset not found
这是我的代码和屏幕截图,我正在尝试设置自定义字体字样,但当字体文件位于资产文件夹中时,出现运行时异常,找不到字体资产。我错过了什么吗?
Typeface font = Typeface.createFromAsset(getAssets(), "font/terminal.ttf");
((TextView) findViewById(R.id.weatherHeadingTV)).setTypeface(font);
文件夹名称必须是 'fonts' 而不是 'font'
Typeface typeface = Typeface.createFromAsset(getAssets(), "fonts/" + font);
您的字体资源文件夹命名不正确。您应该将文件夹命名为 fonts
而不是 font
。同时更改您的代码:
Typeface font = Typeface.createFromAsset(getAssets(), "fonts/terminal.ttf");
字体字样=Typeface.createFromAsset(this.getAssets(),"font/terminal.ttf");
((TextView) findViewById(R.id.weatherHeadingTV)).setTypeface(字体);
我试过另一个字体文件,效果很好所以我得出结论,早期的字体文件已损坏。感谢@Miduhun MP、@Gowtham Raj 和@jagan reddy
如果您将 Instant 运行 与 Android Gradle 插件版本 2.2.0-alphaX 一起使用,这是一个已知错误。
解决方法是关闭 Instant 运行,直到问题得到解决。
当您的项目中有资产并且您正在使用 AS 的 alpha 版本时的常见错误。这似乎是 Android 工作室构建系统中的错误。一个简单的解决方法是在 运行 之前清理项目,这应该可以解决您面临的问题。
如果您使用 AndroidAnnotations,请在应用 build.gradle 中验证资产文件夹是否正常:例如:main/src/assets.
如果您更改字体,请从您的 device/emulator 中卸载您的应用,然后再次 运行。
代码:
public static void setFontFace(Context context, TextView textView) {
Typeface type = Typeface.createFromAsset(context.getAssets(), "myfont.ttf");
textView.setTypeface(type);
}
我遇到了 Android 7+ 不接受 .woff 字体的问题。所以我切换到 .ttf 字体。
我遇到了同样的问题并设法解决了它。最初我认为字体文件已损坏,但事实并非如此。然后我认为 Android Studio 不喜欢 .ttf
文件,因为它们是唯一无法工作的文件。原来是字体没问题。
修复:只需单击 Build > Clean project
。马上帮我修好了。
对我来说,字体文件本身已损坏。我尝试了另一个使其工作。
我已经研究了所有答案,但 none 对我有用。
阅读文档后,我找到了一个新的解决方案。
以下是要遵循的步骤:
- 转到文件菜单
- 在新建中,转到文件夹并创建资产文件夹
- 将您的字体文件粘贴到此资产文件夹中
使用 Typeface 属性在您的代码中使用。
字体类型 = Typeface.createFromAsset(getAssets(), "myfont.ttf");
textView.setTypeface(类型);
现在,您已准备就绪,可以使用您喜欢的字体了。
- 文件夹名称应为 "fonts" 而不是 "font"
- 请注意,您的 "fonts" 文件夹位于 "assets" 文件夹下(应该位于 "main" 文件夹下,而不是 "res" 文件夹下)
我花了太长时间才弄明白这个...
使用这个方法:
final Typeface typeface = ResourcesCompat.getFont(context, R.font.X);
ResourcesCompat
class 是一种检索资源的兼容方式。
这是我的代码和屏幕截图,我正在尝试设置自定义字体字样,但当字体文件位于资产文件夹中时,出现运行时异常,找不到字体资产。我错过了什么吗?
Typeface font = Typeface.createFromAsset(getAssets(), "font/terminal.ttf");
((TextView) findViewById(R.id.weatherHeadingTV)).setTypeface(font);
文件夹名称必须是 'fonts' 而不是 'font'
Typeface typeface = Typeface.createFromAsset(getAssets(), "fonts/" + font);
您的字体资源文件夹命名不正确。您应该将文件夹命名为 fonts
而不是 font
。同时更改您的代码:
Typeface font = Typeface.createFromAsset(getAssets(), "fonts/terminal.ttf");
字体字样=Typeface.createFromAsset(this.getAssets(),"font/terminal.ttf");
((TextView) findViewById(R.id.weatherHeadingTV)).setTypeface(字体);
我试过另一个字体文件,效果很好所以我得出结论,早期的字体文件已损坏。感谢@Miduhun MP、@Gowtham Raj 和@jagan reddy
如果您将 Instant 运行 与 Android Gradle 插件版本 2.2.0-alphaX 一起使用,这是一个已知错误。
解决方法是关闭 Instant 运行,直到问题得到解决。
当您的项目中有资产并且您正在使用 AS 的 alpha 版本时的常见错误。这似乎是 Android 工作室构建系统中的错误。一个简单的解决方法是在 运行 之前清理项目,这应该可以解决您面临的问题。
如果您使用 AndroidAnnotations,请在应用 build.gradle 中验证资产文件夹是否正常:例如:main/src/assets.
如果您更改字体,请从您的 device/emulator 中卸载您的应用,然后再次 运行。
代码:
public static void setFontFace(Context context, TextView textView) {
Typeface type = Typeface.createFromAsset(context.getAssets(), "myfont.ttf");
textView.setTypeface(type);
}
我遇到了 Android 7+ 不接受 .woff 字体的问题。所以我切换到 .ttf 字体。
我遇到了同样的问题并设法解决了它。最初我认为字体文件已损坏,但事实并非如此。然后我认为 Android Studio 不喜欢 .ttf
文件,因为它们是唯一无法工作的文件。原来是字体没问题。
修复:只需单击 Build > Clean project
。马上帮我修好了。
对我来说,字体文件本身已损坏。我尝试了另一个使其工作。
我已经研究了所有答案,但 none 对我有用。 阅读文档后,我找到了一个新的解决方案。 以下是要遵循的步骤:
- 转到文件菜单
- 在新建中,转到文件夹并创建资产文件夹
- 将您的字体文件粘贴到此资产文件夹中
使用 Typeface 属性在您的代码中使用。
字体类型 = Typeface.createFromAsset(getAssets(), "myfont.ttf"); textView.setTypeface(类型);
现在,您已准备就绪,可以使用您喜欢的字体了。
- 文件夹名称应为 "fonts" 而不是 "font"
- 请注意,您的 "fonts" 文件夹位于 "assets" 文件夹下(应该位于 "main" 文件夹下,而不是 "res" 文件夹下) 我花了太长时间才弄明白这个...
使用这个方法:
final Typeface typeface = ResourcesCompat.getFont(context, R.font.X);
ResourcesCompat
class 是一种检索资源的兼容方式。