2015-07-14 18 views
15

Ho fatto quello che la sua documentazione è istruito sulla configurazione del carattere predefinito:biblioteca calligrafia da chrisjenx non funziona

@Override 
protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setupDefaultFont(); 

     setContentView(R.layout.activity_main); 

     setupToolbarAndNavigationDrawer(); 
    } 

    public void setupDefaultFont() { 
     CalligraphyConfig.initDefault(new CalligraphyConfig.Builder() 
         .setDefaultFontPath("fonts/OpenSans-Regular.ttf") 
         .setFontAttrId(R.attr.fontPath) 
         .build() 
     ); 
    } 

Ho anche messo i caratteri in assets/fonts, ma senza alcun risultato. Roboto si presenta ancora come carattere predefinito e non Open Sans. Ho provato ad applicarlo manualmente uno per uno a ogni TextView, ma ancora non funziona.

Qualche idea sul perché questo non funziona?

Maggiori informazioni: (In caso è utile) mio miniSdkVersion è 15 ed è targetSdkVersion 22. Queste sono le mie dipendenze:

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile 'com.android.support:appcompat-v7:22.2.0' 
    compile 'com.android.support:design:22.2.0' 
    compile 'com.android.support:recyclerview-v7:21.0.3' 
    compile 'com.android.support:cardview-v7:21.0.3' 
    compile 'de.hdodenhof:circleimageview:1.2.1' 
    compile 'uk.co.chrisjenx:calligraphy:2.1.0' 
} 

E questo è il tema personalizzato che sto usando.

<resources> 
    <style name="myIIT_theme" parent="Theme.AppCompat"> 
     <item name="colorPrimaryDark">@color/primary_dark</item> 
     <item name="colorPrimary">@color/primary</item> 
     <item name="android:textColorPrimary">@color/white</item> 
     <item name="android:windowBackground">@color/tertiary_dark</item> 
     <item name="android:activatedBackgroundIndicator">@drawable/selected_drawer</item> 
     <item name="windowActionBar">false</item> 
     <item name="windowNoTitle">true</item> 
    </style> 
</resources> 

risposta

30

Per la configurazione abbia effetto, è necessario impostare il carattere predefinito nel metodo onCreate() della vostra abitudine applicazione classe, invece che nell'attività.

Inoltre, le istruzioni sul https://github.com/chrisjenx/Calligraphy dicono di iniettare nel contesto, mediante l'override un metodo nel attività come segue:

@Override 
protected void attachBaseContext(Context newBase) { 
    super.attachBaseContext(CalligraphyContextWrapper.wrap(newBase)); 
} 
+2

Grazie comunque! L'ho appena scoperto prima che tu rispondessi. Dovevo rispondere da solo qui. Grazie comunque. – anobilisgorse