如何在Android Studio中使用自定义字体

如何在Android Studio中使用自定义字体,android,fonts,Android,Fonts,我正在尝试在Android应用程序中使用自定义字体。我将字体文件放在/app/src/main/assets/fonts下,并用 Typeface.createFromAsset(getApplicationContext().getAssets(), "fonts/magorian_font.ttf") 当我运行我的应用程序时,我得到错误信息: 04-23 16:14:40.017 13342-13342/com.pottermore.mandrake.pottermoreapp E/An

我正在尝试在Android应用程序中使用自定义字体。我将字体文件放在/app/src/main/assets/fonts下,并用

Typeface.createFromAsset(getApplicationContext().getAssets(), 
"fonts/magorian_font.ttf")
当我运行我的应用程序时,我得到错误信息:

04-23 16:14:40.017 13342-13342/com.pottermore.mandrake.pottermoreapp E/AndroidRuntime: FATAL EXCEPTION: main
                                                                                   Process: com.pottermore.mandrake.pottermoreapp, PID: 13342
                                                                                   java.lang.RuntimeException: Unable to start activity ComponentInfo{com.pottermore.mandrake.pottermoreapp/com.pottermore.mandrake.pottermoreapp.ActivityHome}: java.lang.RuntimeException: Font asset not found magorian_font.ttf
                                                                                       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2665)
                                                                                       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726)
                                                                                       at android.app.ActivityThread.-wrap12(ActivityThread.java)
                                                                                       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477)
                                                                                       at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                                       at android.os.Looper.loop(Looper.java:154)
                                                                                       at android.app.ActivityThread.main(ActivityThread.java:6119)
                                                                                       at java.lang.reflect.Method.invoke(Native Method)
                                                                                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
                                                                                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
                                                                                    Caused by: java.lang.RuntimeException: Font asset not found magorian_font.ttf
                                                                                       at android.graphics.Typeface.createFromAsset(Typeface.java:206)
                                                                                       at com.pottermore.mandrake.pottermoreapp.ActivityHome.onCreate(ActivityHome.java:34)
                                                                                       at android.app.Activity.performCreate(Activity.java:6679)
                                                                                       at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
                                                                                       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2618)
                                                                                       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726) 
                                                                                       at android.app.ActivityThread.-wrap12(ActivityThread.java) 
                                                                                       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477) 
                                                                                       at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                                       at android.os.Looper.loop(Looper.java:154) 
                                                                                       at android.app.ActivityThread.main(ActivityThread.java:6119) 
                                                                                       at java.lang.reflect.Method.invoke(Native Method) 
                                                                                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) 
                                                                                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) 

我做错了什么?

当你想给文本视图一个不同的字体时,它应该是这样的:)


在此路径中添加资产文件夹:
src/main/assets/font

并使用此代码:

    Typeface typrface=Typeface.createFromAsset(getAssets(),"font/iranian_sans");

Text.setTypeface(typrface);
更新


ِ别忘了,您必须复制字体文件夹中的
ttf
字体格式

您确定文件名正确吗?如果您在Android Studio中使用Build>Analyze APK并打开APK文件,您是否在
assets/fonts/
中看到您的字体,原因是:java.lang.RuntimeException:font-asset not found magorian\u font.ttf
FYI,您需要使用@notation,类似于Twitter,确保对评论的回复被您试图将其指向的人接收。如果说“我看不到”,你的意思是资产不在你的APK中。。。那将是相当奇怪的。您可以尝试清理和重建项目(都可以在“生成”菜单中找到),然后查看它是否显示。@Commonware我重建了项目,现在可以在apk文件中看到字体,但仍然出现相同的错误。好吧,这更奇怪了。请尝试从正在测试的设备或模拟器中完全卸载应用程序,然后再次从IDE运行它。如果它崩溃,请仔细检查是否是完全相同的错误,因为有时您可能会因为不同的原因在类似的地方崩溃。请详细解释您的代码和问题的代码之间的差异,以及这种差异如何解释崩溃。我在做这些更改时仍然会遇到相同的错误。请解释,详细地说,你的代码和问题的代码有什么不同,以及这种不同是如何解释崩溃的。@JamesRettie你确定要在font文件夹中复制字体吗?这对我有用,但我必须添加字体文件扩展名(.ttf)所以它是这样的:Typeface typrface=Typeface.createfromsete(getAssets(),“font/irianian_sans.ttf”);
    Typeface typrface=Typeface.createFromAsset(getAssets(),"font/iranian_sans");

Text.setTypeface(typrface);