【问题标题】:Android Runtime Exception font asset not found未找到 Android 运行时异常字体资源
【发布时间】:2015-11-24 07:54:32
【问题描述】:

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

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

【问题讨论】:

  • 我遇到了类似的错误。重新启动 Android Studio 解决了它。不要问我为什么......
  • 在我的情况下,即使只是重新启动模拟器也有帮助。看起来像 android studio 中的一个错误
  • 重新启动 Android Studio(即使在管理员中)对我不起作用,我的文件夹路径是正确的。

标签: java android android-fonts


【解决方案1】:

使用这个方法:

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

ResourcesCompat 类是检索资源的兼容方式。

【讨论】:

  • 你好!虽然此代码 sn-p 可能是解决方案,但including an explanation 确实有助于提高您的帖子质量。请记住,您是在为将来的读者回答问题,而这些人可能不知道您提出代码建议的原因。
  • 这对我有用,应该标记为正确答案
  • 最佳答案。简单,现场
  • 这应该是公认的答案,它向后兼容并且避免了魔术字符串
【解决方案2】:
  1. 文件夹的名称应该是“fonts”而不是“font”
  2. 请注意,您的“fonts”文件夹位于“assets”文件夹下(它应该位于“main”文件夹下,而不是“res”文件夹下) 我花了很长时间才弄明白这个……

【讨论】:

  • 这是最好的答案。作者必须接受至少一个答案才能帮助他人。
【解决方案3】:

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

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

【讨论】:

  • 如果问题得到解决,请接受答案...它将帮助社区
  • 我已将字体文件夹重命名为字体,但仍然存在相同的错误。
【解决方案4】:

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

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

【讨论】:

  • 我已将字体文件夹重命名为字体,但仍然存在相同的错误。
  • @MuzammilHusnain:对我来说看起来像棒棒糖错误,检查这个答案stackoverflow.com/questions/27269264/…
  • 这是解决我问题的唯一答案。我有多余的“字体”和“字体”文件夹。
【解决方案5】:

如果您将 Instant Run 与 Android Gradle 插件版本 2.2.0-alphaX 一起使用,这是一个已知错误。

解决方法是在问题解决之前关闭 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

【讨论】:

    【解决方案6】:

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

    【讨论】:

    • 清理项目解决了这个问题! :)
    【解决方案7】:

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

    修复:只需单击Build > Clean project。马上帮我修好了。

    【讨论】:

      【解决方案8】:

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

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

      【讨论】:

        【解决方案9】:

        我尝试了另一个运行良好的字体文件所以我得出结论,早期的字体文件已损坏。感谢@Miduhun MP、@Gowtham Raj 和 @jagan reddy

        【讨论】:

          【解决方案10】:

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

          如果您更改字体,请从您的设备/模拟器中卸载您的应用,然后再次运行。

          代码:

          public static void setFontFace(Context context, TextView textView) {
            Typeface type = Typeface.createFromAsset(context.getAssets(), "myfont.ttf");
            textView.setTypeface(type);
          }
          

          【讨论】:

          • 我正在使用上面的代码,但与“找不到字体资产”相同的错误。文件存在于资产和资产/字体中
          【解决方案11】:

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

          【讨论】:

            【解决方案12】:

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

            【讨论】:

              【解决方案13】:

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

              1. 转到文件菜单
              2. 在新建中,转到文件夹并创建资产文件夹
              3. 将您的字体文件粘贴到此资产文件夹中
              4. 使用 Typeface 属性在您的代码中使用。

                字体类型 = Typeface.createFromAsset(getAssets(), "myfont.ttf"); textView.setTypeface(type);

              现在,你们都可以使用自己喜欢的字体了。

              【讨论】:

              • 给出空指针异常。我坚持了大约一个星期
              猜你喜欢
              • 2017-07-09
              • 1970-01-01
              • 2019-03-02
              • 1970-01-01
              • 1970-01-01
              • 2012-06-22
              • 1970-01-01
              • 1970-01-01
              • 2011-12-24
              相关资源
              最近更新 更多