簡體   English   中英

Android Studio中的自定義字體

[英]custom font in Android Studio

如何在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:FATAL EXCEPTION:main進程:com.mmd2009.readnews,PID:4206 java.lang.RuntimeException: 無法在android上創建本機字體 。在android.os上的com.mmd2009.readnews.MainActivity $ ReadNewsAsyncTask.onPreExecute(MainActivity.java:216)的android.graphics.Typeface.createFromAsset(Typeface.java:149)上的graphics.Typeface。(Typeface.java:175)。位於android.view.View的com.mmd2009.readnews.MainActivity $ 1.onClick(MainActivity.java:70)的android.os.AsyncTask.execute(AsyncTask.java:535)上的AsyncTask.executeOnExecutor(AsyncTask.java:587)。在Android.os.Handler.dispatchMessage(Handler)上的android.view.View $ PerformClick.run(View.java:18422)android.os.Handler.handleCallback(Handler.java:733)執行點擊(View.java:4438) .java:95)在android.app.Looper.loop(Looper.java:136)的android.app.ActivityThread.main(ActivityThread.java:5017)at java.lang.reflect.Method.invokeNative(Native Method)at at java.lang.reflect.Method.invoke(Method.java :515)at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:779)位於dalvik.system.NativeStart的com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)。 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>

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

編輯

這似乎是Android OS偶爾發生的錯誤。 看看這個鏈接,它似乎已經解決了。 “只能為某些人制作”原生字體“

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

除此之外,Android可能因某種原因而不喜歡您的字體文件。 嘗試使用其他字體文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM