2014-06-27 118 views
3

如何在android studio中創建自定義字體? 我試圖使用自定義字體,我讀過,我想將字體放在資產/字體。 我已經搜索了很長時間,但很難找到幫助。 我哪裏錯了?我真的不知道該怎麼做。 我寫下了所有的細節。我試過了,沒有成功。 我正在使用Android Studio,而且似乎沒有資產文件夾。所以我創建了一個。但是當我將資產文件夾放在/ main/assets中時,我的應用程序崩潰。我使用此代碼來加載我的字體。Android Studio中的自定義字體

我知道。結構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 

更新

我豐泰文件目錄:E:\ AndroidProjects \ ReadNews \ ReadNews的\ src \主\資產\ 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); 
     } 

錯誤:

7月6日至27日: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 $ ReadNewsAs yncTask.onPreExecute(MainActivity.java:216) at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:587) at android.os.AsyncTask.execute(AsyncTask.java:535) at com.mmd2009.readnews。 MainActivity $ 1.onClick(MainActivity.java:70) at android.view.View.performClick(View.java:4438) at android.view.View $ PerformClick.run(View.java:18422) at android.os .Handler.handleCallback(Handler.java:733) at android.os.Handler.dispatchMessage(Handler.java:95) 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。方法.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) 在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> 

回答

3

您的字體路徑不正確。您沒有font文件夾。將您的字體路徑更改爲"Tahoma.ttf",或在資產文件夾內創建文件夾。

編輯

這似乎是偶爾與Android操作系統發生的錯誤。看看這個鏈接,它看起來已經被解決了。 "Native typeface cannot be made" only for some people

+0

我有一個字體文件夾。上面的結構只是一個例子。 –

+0

好吧,那很糟糕。 – user3331142

1

這可能是你指的是,做了字體文件不存在。您的目錄列表不顯示fonts/Tahoma.ttf,這是您的代碼所指的內容。

除此之外,可能是因爲某些原因,Android根本不喜歡您的字體文件。嘗試一個不同的字體文件。

+0

我使用不同的字體文件但我的應用程序崩潰。我的fonte文件是「arial.ttf」 –

+0

@ user3763877:你的路徑是'fonts/Tahoma.ttf'。不僅沒有'Tahoma.ttf'文件,'assets /'裏面沒有'fonts /'目錄。 – CommonsWare

+0

我有一個字體文件夾。上面的結構只是一個例子。我的文件文件目錄:E:\ AndroidProjects \ ReadNews \ ReadNews \ src \ main \ assets \ fonts \ –