Android Studio中的自定义字体

时间:2014-06-27 11:58:39

标签: android fonts android-typeface

如何在android studio中创建自定义字体? 我试图使用自定义字体,我读过我想将字体放在资产/字体中。 我一直在努力寻找,但却没有找到任何帮助。 哪里错了?我真的不知道该怎么办。 我在下面写了所有细节。我尝试过但没有成功。 我正在使用Android Studio,似乎我没有资产文件夹。所以我创建了一个。但是当我将资源文件夹放在/ main / assets中时,我的应用程序崩溃了。我正在使用此代码加载我的字体。

我知道。 Android Studio 0.5.2中项目的结构:

root-module
|--.idea
|--app
|----build
|----src
|------main
|--------assets
|----------fonts/SomeFont.ttc
|----------fonts/AnotherFont.otf
|--------java
|----------source code here
|--------res
|------AndroidManifest.xml
|----build.gradle

更新

我的fonte文件目录:E:\ AndroidProjects \ ReadNews \ ReadNews \ src \ main \ assets \ fonts \

结束更新

我的代码:

 @Override
     protected void onPreExecute() {
            TextView titleTextView = (TextView) _dialog.findViewById(R.id.title_news_TextView);
            TextView messageTextView = (TextView) _dialog.findViewById(R.id.message_TextView);
            String fontPath = "fonts/Tahoma.ttf";
            Typeface tf = Typeface.createFromAsset(MainActivity.this.getResources().getAssets(), fontPath);
            titleTextView.setTypeface(tf);
            messageTextView.setTypeface(tf);
        }

错误:

  

06-27 07:40:37.985 4206-4206 / com.mmd2009.readnews E / AndroidRuntime:   致命异议:主要       处理:com.mmd2009.readnews,PID:4206       java.lang.RuntimeException:原生字体无法生成               在android.graphics.Typeface。(Typeface.java:175)               在android.graphics.Typeface.createFromAsset(Typeface.java:149)               在com.mmd2009.readnews.MainActivity $ ReadNewsAsyncTask.onPreExecute(MainActivity.java:216)               在android.os.AsyncTask.executeOnExecutor(AsyncTask.java:587)               在android.os.AsyncTask.execute(AsyncTask.java:535)               at com.mmd2009.readnews.MainActivity $ 1.onClick(MainActivity.java:70)               在android.view.View.performClick(View.java:4438)               在android.view.View $ PerformClick.run(View.java:18422)               在android.os.Handler.handleCallback(Handler.java:733)               在android.os.Handler.dispatchMessage(Handler.java:95)               在android.os.Looper.loop(Looper.java:136)               在android.app.ActivityThread.main(ActivityThread.java:5017)               at java.lang.reflect.Method.invokeNative(Native Method)               在java.lang.reflect.Method.invoke(Method.java:515)               在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:779)               在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)               在dalvik.system.NativeStart.main(本地方法)

我的ReadNews-ReadNews.iml:

  <facet type="android" name="Android">
      <configuration>
        <option name="SELECTED_BUILD_VARIANT" value="debug" />
        <option name="ASSEMBLE_TASK_NAME" value="assembleDebug" />
        <option name="COMPILE_JAVA_TASK_NAME" value="compileDebugJava" />
        <option name="ASSEMBLE_TEST_TASK_NAME" value="assembleDebugTest" />
        <option name="SOURCE_GEN_TASK_NAME" value="generateDebugSources" />
        <option name="ALLOW_USER_CONFIGURATION" value="false" />
        <option name="MANIFEST_FILE_RELATIVE_PATH" value="/src/main/AndroidManifest.xml" />
        <option name="RES_FOLDER_RELATIVE_PATH" value="/src/main/res" />
        <option name="RES_FOLDERS_RELATIVE_PATH" value="file://$MODULE_DIR$/src/main/res" />
        <option name="ASSETS_FOLDER_RELATIVE_PATH" value="/src/main/assets" />
      </configuration>
    </facet>

2 个答案:

答案 0 :(得分:3)

您的字体路径不正确。您没有font文件夹。将字体路径更改为"Tahoma.ttf",或在资产文件夹中创建文件夹。

修改

这似乎是Android OS偶尔会发生的错误。看看这个链接,它似乎已经解决了。 "Native typeface cannot be made" only for some people

答案 1 :(得分:1)

可能是您指的是不存在的字体文件。您的目录列表中没有显示fonts/Tahoma.ttf,这是您的代码所指的内容。

除此之外,Android可能因某些原因而不喜欢您的字体文件。尝试使用其他字体文件。