【问题标题】:Any way to setTypeFace from url for a Textview?有什么方法可以从 Textview 的 url 中设置 TypeFace?
【发布时间】:2015-03-24 04:56:07
【问题描述】:

我想从 url 中设置 TypeFace,例如:https://github.com/anak10thn/frontend-homepage/raw/master/font/helvetica-regular.otf

你知道有什么办法吗?

我试过了:

                Typeface tf = Typeface.createFromFile("https://github.com/anak10thn/frontend-homepage/raw/master/font/helvetica-regular.otf");

            tv.setTypeface(tf);

它不起作用。

我有这个错误:

03-24 04:46:59.931    1314-1314/bya.fchps.buildyourapp E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: bya.fchps.buildyourapp, PID: 1314
java.lang.RuntimeException: Unable to start activity ComponentInfo{bya.fchps.buildyourapp/com.fchps.buildyourapp.views.ClassicView}: java.lang.RuntimeException: native typeface cannot be made
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
        at android.app.ActivityThread.access$800(ActivityThread.java:135)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:136)
        at android.app.ActivityThread.main(ActivityThread.java:5017)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:515)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
        at dalvik.system.NativeStart.main(Native Method)
 Caused by: java.lang.RuntimeException: native typeface cannot be made
        at android.graphics.Typeface.<init>(Typeface.java:175)
        at android.graphics.Typeface.createFromFile(Typeface.java:159)
        at com.fchps.buildyourapp.views.ClassicView.setClassicLabel(ClassicView.java:178)
        at         com.fchps.buildyourapp.views.ClassicView.onCreate(ClassicView.java:75)
        at android.app.Activity.performCreate(Activity.java:5231)
        at   android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
        at            android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)

【问题讨论】:

  • 您好,建议您先下载设备中的otf文件,然后将本地otf文件路径提供给Typeface,而不是直接将URL设置为Typeface。我认为这样做会更好。

标签: java android android-typeface


【解决方案1】:

您好您不能直接在字体中添加字体的 URL。如果你想在你的应用程序中动态使用字体,最好的选择是应用程序会在本地设备中下载第一个字体。然后在字体中定义字体的路径。

Typeface typeface = Typeface.createFromFile(
    new File(Environment.getExternalStorageDirectory(), "font.ttf"));

【讨论】:

  • 谢谢你的回答:)
【解决方案2】:

我不相信你真的可以。自定义字体通常保存为系统资源文件,而不是称为 Web 文档。据我所知,最好的方法很可能是:在您的资产文件夹中创建一个字体文件夹。下载您想要的字体并将其放在字体文件夹中,然后在代码中引用您的字体文件夹。如需更详细的说明,请参阅本网站:http://www.tutorialspoint.com/android/android_custom_fonts.htm

【讨论】:

  • 谢谢你的回答:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多