【问题标题】:How to add alternative font to Button text in Android?如何在 Android 中为按钮文本添加替代字体?
【发布时间】:2012-08-24 03:22:53
【问题描述】:

我正在尝试在我的一个 Android 应用程序的按钮上使用 Calibri 字体,经过一番搜索后,我发现了如何制作自己的字体。但是当我尝试在按钮上设置字体时,它不会给我一个错误,但应用程序不会启动。 有谁知道如何解决这个问题?

final Button bt4 = (Button) findViewById(R.id.bt4);
final Typeface font = Typeface.createFromAsset(getAssets(),"CALIBRI.ttf");
bt4.setTypeface(font);

这几乎是我到目前为止使用的所有代码。

以及日志猫信息

08-29 13:31:20.593: E/global(1143): Deprecated Thread methods are not supported.
08-29 13:31:20.593: E/global(1143): java.lang.UnsupportedOperationException
08-29 13:31:20.593: E/global(1143):     at java.lang.VMThread.stop(VMThread.java:85)
08-29 13:31:20.593: E/global(1143):     at java.lang.Thread.stop(Thread.java:1280)
08-29 13:31:20.593: E/global(1143):     at java.lang.Thread.stop(Thread.java:1247)
08-29 13:31:20.593: E/global(1143):     at com.github.TheCad.nijmegen1.SplashScreen$1.run(SplashScreen.java:33)
08-29 13:31:21.553: D/AndroidRuntime(1143): Shutting down VM
08-29 13:31:21.553: W/dalvikvm(1143): threadid=1: thread exiting with uncaught exception (group=0x40015560)
08-29 13:31:21.583: E/AndroidRuntime(1143): FATAL EXCEPTION: main
08-29 13:31:21.583: E/AndroidRuntime(1143): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.github.TheCad.nijmegen1/com.github.TheCad.nijmegen1.MainActivity}: java.lang.RuntimeException: native typeface cannot be made
08-29 13:31:21.583: E/AndroidRuntime(1143):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
08-29 13:31:21.583: E/AndroidRuntime(1143):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
08-29 13:31:21.583: E/AndroidRuntime(1143):     at android.app.ActivityThread.access$1500(ActivityThread.java:117)
08-29 13:31:21.583: E/AndroidRuntime(1143):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
08-29 13:31:21.583: E/AndroidRuntime(1143):     at android.os.Handler.dispatchMessage(Handler.java:99)
08-29 13:31:21.583: E/AndroidRuntime(1143):     at android.os.Looper.loop(Looper.java:123)
08-29 13:31:21.583: E/AndroidRuntime(1143):     at android.app.ActivityThread.main(ActivityThread.java:3683)
08-29 13:31:21.583: E/AndroidRuntime(1143):     at java.lang.reflect.Method.invokeNative(Native Method)
08-29 13:31:21.583: E/AndroidRuntime(1143):     at java.lang.reflect.Method.invoke(Method.java:507)
08-29 13:31:21.583: E/AndroidRuntime(1143):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
08-29 13:31:21.583: E/AndroidRuntime(1143):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
08-29 13:31:21.583: E/AndroidRuntime(1143):     at dalvik.system.NativeStart.main(Native Method)
08-29 13:31:21.583: E/AndroidRuntime(1143): Caused by: java.lang.RuntimeException: native typeface cannot be made
08-29 13:31:21.583: E/AndroidRuntime(1143):     at android.graphics.Typeface.<init>(Typeface.java:147)
08-29 13:31:21.583: E/AndroidRuntime(1143):     at android.graphics.Typeface.createFromAsset(Typeface.java:121)
08-29 13:31:21.583: E/AndroidRuntime(1143):     at com.github.TheCad.nijmegen1.MainActivity.onCreate(MainActivity.java:25)
08-29 13:31:21.583: E/AndroidRuntime(1143):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
08-29 13:31:21.583: E/AndroidRuntime(1143):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
08-29 13:31:21.583: E/AndroidRuntime(1143):     ... 11 more

【问题讨论】:

  • 如果不查看您的代码,没有人可以建议或帮助您。
  • 和相关的logcat信息。
  • 你更新你在AndroidManifest.xml的活动了吗?
  • 更新到底是什么意思?
  • 可能要记住,Windows 附带的 Calibri 字体未获得再分发许可。

标签: java android button custom-font


【解决方案1】:

你已经在运行时创建了 TypeFace。

例子:

Button btn=(Button)findViewById(R.id.BUTTON_ID);
Typeface face=Typeface.createFromAsset(getAssets(), "fonts/FONT_NAME.TTF");
btn.setTypeface(face);

更新: 您在 mainactivity 的第 25 行有错误。 发布该行。

【讨论】:

  • 那行final Typeface font = Typeface.createFromAsset(getAssets(),"CALIBRI.ttf");
【解决方案2】:

在 assets 文件夹中创建一个名为“font”的文件夹并将您的字体“calibri.ttf”存储在该文件夹中,也尝试将您的字体名称保存为小写字母并使用此代码,

Button btn=(Button)findViewById(R.id.BUTTON_ID);
Typeface face= = Typeface.createFromAsset(getAssets(), "font/calibri.ttf");
btn.setTypeface(face);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-16
    • 2013-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-11
    相关资源
    最近更新 更多