未找到Android Runtime Exception字体资产

问题描述 投票:10回答:13

这是我的代码和屏幕截图我正在尝试设置自定义字体字体但是当字体文件在资产文件夹中时,运行时异常发生字体资产未找到。我错过了什么吗?

Typeface font = Typeface.createFromAsset(getAssets(), "font/terminal.ttf");
((TextView) findViewById(R.id.weatherHeadingTV)).setTypeface(font);

java android android-fonts
13个回答
8
投票

文件夹名称必须是'fonts'而不是'font'

Typeface typeface = Typeface.createFromAsset(getAssets(), "fonts/" + font);

0
投票

我遇到了Android 7+不接受.woff字体的问题。所以我切换到了.ttf字体。


0
投票

对我来说,字体文件本身已损坏。我尝试了另一个让它工作。


0
投票

使用此方法:

final Typeface typeface = ResourcesCompat.getFont(context, R.font.X);

-1
投票

我已经调查了所有的答案,但没有一个适合我。我在阅读完文档后找到了一个新的解决方案。以下是要遵循的步骤:

  1. 转到文件菜单
  2. 在新的,转到文件夹并创建资产文件夹
  3. 将您的字体文件粘贴到此资源文件夹中
  4. 使用Typeface属性在代码中使用。 字体类型= Typeface.createFromAsset(getAssets(),“myfont.ttf”); textView.setTypeface(类型);

现在,您已准备好使用您喜欢的字体。


5
投票

您的字体资源文件夹名称不正确。您应该将文件夹命名为fonts而不是font。还要更改您的代码:

Typeface font = Typeface.createFromAsset(getAssets(), "fonts/terminal.ttf");

4
投票
  1. 文件夹的名称应为“fonts”而不是“font”
  2. 请注意,您的“fonts”文件夹位于“assets”文件夹下(应位于“main”文件夹下,而不是“res”文件夹下)我花了太长时间才弄清楚这个...

3
投票

如果你使用Android Gradle插件版本2.2.0-alphaX的Instant Run,这是一个已知的bug。

解决方法是关闭Instant Run直到问题得到解决。

你可以在这里追踪它:https://code.google.com/p/android/issues/detail?id=212849&can=1&q=subcomponent%3DTools-Studio%20-has%3Aproject%20attachments%3D0&colspec=ID%20Status%20Priority%20Owner%20Summary%20Stars%20Reporter%20Opened&start=7700


2
投票

在项目中有资产并且使用AS的alpha版本时常见错误。这似乎是Android studio构建系统中的一个错误。一个简单的解决方法是在运行之前清理项目,这应该可以解决您面临的问题。


1
投票

我尝试了另一种工作正常的字体文件所以我得出结论,早期的字体文件已损坏。感谢@Miduhun MP,@ Gowtham Raj和@jagan reddy


1
投票

我有同样的问题,并设法解决它。最初我认为字体文件已损坏,但事实并非如此。然后我认为Android Studio不喜欢.ttf文件,因为它们是唯一不起作用的。事实证明,字体并没有错。

FIX:只需点击Build > Clean project。我马上把它固定好了。


0
投票

字体字体= Typeface.createFromAsset(this.getAssets(),“font / terminal.ttf”);

((TextView)findViewById(R.id.weatherHeadingTV))。setTypeface(typeface);


0
投票

如果您使用AndroidAnnotations,请在app build.gradle中验证assets文件夹是否正常:ex:main / src / assets。

如果更改de font,请从设备/模拟器中卸载应用程序,然后重新运行。

码:

public static void setFontFace(Context context, TextView textView) {
  Typeface type = Typeface.createFromAsset(context.getAssets(), "myfont.ttf");
  textView.setTypeface(type);
}
© www.soinside.com 2019 - 2024. All rights reserved.