在棒棒糖上找不到字体资产helvetica.ttf

Slo*_*nho 38 java fonts android android-5.0-lollipop

由于某种原因在棒棒糖,我得到这个错误,因为棒棒糖是如此新的我无法找到为什么在任何地方,我不知道如何弄明白.在此先感谢Logcat错误:

java.lang.RuntimeException: Unable to start activity                                       
ComponentInfo{com.bent.MissionaryTracker/com.bent.MissionaryTracker.MainActivity}:          
java.lang.RuntimeException: Font asset not found helvetica.ttf
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
at android.app.ActivityThread.access$800(ActivityThread.java:144)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5221)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
Caused by: java.lang.RuntimeException: Font asset not found helvetica.ttf
at android.graphics.Typeface.createFromAsset(Typeface.java:190)
at com.bent.MissionaryTracker.MainActivity.onCreate(MainActivity.java:57)
at android.app.Activity.performCreate(Activity.java:5933)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251)
... 10 more
Run Code Online (Sandbox Code Playgroud)

编辑:这是导致错误的代码

    title = (TextView) findViewById(R.id.title);


    Typeface font = Typeface.createFromAsset(getAssets(), "helvetica.ttf");
    title.setTypeface(font);
Run Code Online (Sandbox Code Playgroud)

我的项目文件夹中的assets文件夹中有helvetica.ttf.

编辑:此应用程序适用于所有设备,直到5.0,所以由于某种原因5.0 5.0无法识别我的资产文件夹中的文件.

我试图在我的资源文件夹中发布它的截图,但我没有足够的声誉来发布图像.

Sag*_*nga 76

如果您正在使用Android Studio,请确保您的资产文件夹位于main下而不是res这对我有用

  • 我有这个问题,这个解决方案对我不起作用. (14认同)

Pen*_*zzz 45

现在最好使用自定义字体这种方法

将字体存储在res/font中

要使用字体:

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

  • 这绝对是现在最好的答案,很高兴我向下滚动 (3认同)
  • STACKOVERFLOW 中的最佳答案!!!!!!!!!!!!!!!!!!!!!!!!!!! 你是英雄 (2认同)

小智 30

在我意识到我没有在.otf文件之前放置"fonts /"之前我也遇到过这个问题

 Typeface font = Typeface.createFromAsset(getAssets(),"fonts/TTMastersDEMOBlack.ttf");
Run Code Online (Sandbox Code Playgroud)

  • 仅当您的字体文件夹名为"fonts"时才有效 (2认同)

Jor*_*ego 16

这对我有用.在我的情况下,它不起作用,因为我在res中创建资产文件夹而不是在main中.

在此输入图像描述


Nub*_*per 8

如果更改目录不起作用,可能是由于Android团队已经解决了一个问题,但没有及时赶上5.0.这一切都在这里解释:

https://code.google.com/p/android-developer-preview/issues/detail?id=608&thanks=608&ts=1404735239

解决方法(至少对我而言)是使用TTX修复字体文件,如链接问题中所述.

如果你没有python专业知识,让TTX工作可能会有点麻烦,所以我最终下载了包含TTX的Adobe的AFDKO.你必须运行'ttx yourfontfile.ttf',它将你的文件转换为.ttx然后再次运行'ttx yourfontfile.ttx'以获得一个适用于5.0的新.ttf.


小智 5

只需将资源文件夹放在主目录中即可.这样做之后:

 Typeface typeface=Typeface.createFromAsset(getAssets(),"OpenSans-Light.ttf");
    textView.setTypeface(typeface);
Run Code Online (Sandbox Code Playgroud)


key*_*bee 5

清理项目,它在android 6.0上对我有帮助