Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在棒棒糖上找不到字体资产helvetica.ttf_Java_Android_Fonts_Android 5.0 Lollipop - Fatal编程技术网

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

Java 在棒棒糖上找不到字体资产helvetica.ttf,java,android,fonts,android-5.0-lollipop,Java,Android,Fonts,Android 5.0 Lollipop,由于棒棒糖的某些原因,我得到了这个错误,因为棒棒糖是如此的新,我无法找出为什么在任何地方,我不知道如何找出它。提前感谢Logcat错误: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.bent.MissionaryTracker/com.bent.MissionaryTracker.MainActivity}:

由于棒棒糖的某些原因,我得到了这个错误,因为棒棒糖是如此的新,我无法找出为什么在任何地方,我不知道如何找出它。提前感谢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
编辑:下面是抛出错误的代码

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


    Typeface font = Typeface.createFromAsset(getAssets(), "helvetica.ttf");
    title.setTypeface(font);
我的项目文件夹中的资产文件夹中有helvetica.ttf

编辑: 此应用程序在5.0之前的所有设备上都有效,因此出于某种原因,5.0无法识别“我的资产”文件夹中的文件

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

好的,伙计们

我遇到了同样的问题。首先,我让我的字体加载逻辑防崩溃:

/**
 * Init method. This method must be called before any other call in this class.
 */
public static void init () {
    fontPlain  = createFont( "helvetica.ttf" , Typeface.NORMAL );
    fontBold   = createFont( "helveticab.ttf", Typeface.BOLD   );
}

/**
 * Load font from assets font folder.
 */
public static Typeface createFont (String font, int style) {
    Typeface typeface;
    try {
        AssetManager assets = Kit.getAppContext().getAssets();
        typeface = Typeface.createFromAsset( assets, "fonts" + File.separator + font );
    }
    catch (RuntimeException e) {
        // createFromAsset() will throw a RuntimeException in case of error.
        Log.e( Constants.TAG, "Unable to create font: " + font, e );
        typeface = Typeface.defaultFromStyle( style );
    }
    return typeface;
}
然后我还从git中的这个项目下载了另一种字体:

我意识到我的旧字体是56KB,而这个新字体是84KB。我想我有一个旧版本的字体


在使用此字体之前,请确保您拥有正确的许可证。

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

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


如果您没有python方面的专业知识,那么让TTX正常工作可能会有点麻烦,因此我最终下载了包含TTX的软件。您必须运行“ttx yourfontfile.ttf”,它会将您的文件转换为.ttx,然后再次运行“ttx yourfontfile.ttx”,以获得新的.ttf,该文件可与5.0一起使用。

如果您正在安卓Studio上工作,请确保您的资产文件夹位于main下,而不是res下
这对我来说很管用

我以前就面临过这个问题。我删除了x.ttf,然后取消了删除,尝试在没有锁定的情况下运行。所以我的修复方法就是删除它,然后再次下载字体并将其粘贴到字体/文件夹,一切都很好。

这对我来说很有效。在我的例子中,它不起作用,因为我在res而不是main中创建了assets文件夹


只需在主目录中放置一个资产文件夹。 在此之后:

 Typeface typeface=Typeface.createFromAsset(getAssets(),"OpenSans-Light.ttf");
    textView.setTypeface(typeface);

在我意识到没有在.otf文件前加上“font/”之前,我也遇到了这个问题

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

清理项目,它在android 6.0上帮助了我现在最好使用自定义字体

将字体存储在res/font

要获得字体,请使用:

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


你能提供一些代码吗?@失眠症患者请查看更新。你确定你的资产文件夹中有
helvetica.ttf
,我也收到了。从2.3.0到4.4.4工作正常,但在5.0棒棒糖中停止工作。在我的情况下,我没有得到任何错误,它只是使用另一种字体。我也有这个问题,事情是一些工作。我已经检查过了,它不是“嵌入”设置(这会阻止某些字体在浏览器上工作),因为我的工作字体和非工作字体都有相同的设置:允许打印+预览(只读)。他们也是TTF。不确定还要检查什么。你知道这两种字体的区别吗?很抱歉,我不是字体专家。但它似乎是一个较旧的版本或已损坏的版本。这里最直接的假设是这些字体文件不在正确的目录中。@Igor Ganapolsky:我当时试过,但没有成功。也许谷歌现在已经解决了这个问题。当然,您应该首先尝试将它放在另一个目录中,但是如果这不起作用(我重复一遍,它对我来说不起作用),请检查字体文件是否正常。我更新了答案以更好地解释它。我一直认为“res”dir是用于图形化的东西,奇怪的是,你必须做一个新的。文件夹:/我有这个问题,这个解决方案对我不起作用。在我使用这个建议并解决我的问题之前,我无用地旋转了30分钟。尽管如此,我不得不清理我的项目两次:P非常感谢你的建议!但问题出在android设备上,在设备Typeface font=Typeface.createFromAsset(context.getResources().getAssets(),“saumil_guj.ttf”)中没有类似项目的东西;仅当字体文件夹名为“字体”时,此行适用于meThis。如果您已从其他项目复制字体,则此行是首选选项。是要在运行Android 4.1(API级别16)及更高版本的设备上使用XML字体功能,请使用支持库26。有关使用支持库的更多信息,请参阅使用支持库一节。查看文档这绝对是现在的最佳答案,很高兴我在STACKOVERFLOW中向下滚动了最佳答案!!!!!!!!!!!!!!!!!!!!!!!!!!!。您是Hero这应该是公认的答案,因为它允许开发人员使用新方法,而不管api级别如何。createFromAsset()要求AssetManager和String作为属性->不能使用api28编译,因为R.font.myfont返回int。