2015-07-02 17 views
14

Sto utilizzando la libreria per l'utilizzo di caratteri personalizzati nella mia applicazione. Ho impostato un carattere personalizzato per tutta la mia applicazione per carattere predefinito utilizzando CalligraphyConfig, nella mia classe Application nel metodo #onCreate() e funziona correttamente. Il problema arriva quando ho bisogno di cambiare il font di una attività (SettingsActivity).Caratteri diversi per alcune attività utilizzando la libreria calligrafia

Ho provato a utilizzare il carattere personalizzato in style tuttavia non ha modificato il carattere dell'attività.

Di seguito è riportato il codice di stile

<style name="EnglishActivitiesTheme" parent="AppTheme"> 
     <item name="android:textViewStyle">@style/AppTheme.Widget.TextView</item> 
    </style> 

    <style name="AppTheme.Widget.TextView" parent="android:Widget.Holo.Light.TextView"> 
     <item name="fontPath">fonts/Roboto-Regular.ttf</item> 
    </style> 

Nel manifesto

<activity 
     android:name=".SettingsActivity" 
     android:theme="@style/EnglishActivitiesTheme" 
     android:parentActivityName=".MainActivity" > 
     <meta-data 
      android:name="android.support.PARENT_ACTIVITY" 
      android:value=".MainActivity" /> 
    </activity> 

sto facendo qualcosa di sbagliato con carattere personalizzato se il metodo stile? o c'è un metodo migliore per farlo?

+0

hai aggiunto attachBaseContext nella tua attività? – EagleEye

+0

@EagleEye Sì, l'ho fatto. Come ho detto, il carattere personalizzato predefinito funziona correttamente. –

+0

Si avvicina con lo stile sembra essere buono ... Ma ho letto nel readme di lib forse qualcosa di interessante: 'Predefinito - se definito nel CalligraphyConfig questo è usato di nessuno dei precedenti sono trovati O se uno dei ritorni sopra un carattere non valido. Hai un font non valido? Potrebbe essere un problema come questo (spero sia perché, in caso contrario, sarà più complicato da risolvere) –

risposta

5

Sembra che sia perché AppCompat crea una versione diversa di pulsanti/visualizzazioni di testo in fase di esecuzione.

Nella tua startup calligrafia nell'applicazione, aggiungere la riga:

.addCustomStyle(AppCompatTextView.class, android.R.attr.textViewStyle) 

per finire con qualcosa di simile:

@Override 
public void onCreate() { 
    super.onCreate(); 
    CalligraphyConfig.initDefault(new CalligraphyConfig.Builder() 
          .setDefaultFontPath("fonts/some-other-custom-font.ttf") 
          .addCustomStyle(AppCompatTextView.class, android.R.attr.textViewStyle) 
          .setFontAttrId(R.attr.fontPath) 
          .build() 
      ); 
    //.... 
} 

E che dovrebbe prendersi cura dei vostri textviews.

Edit:

Questo dovrebbe ora essere fissato con https://github.com/chrisjenx/Calligraphy/pull/191, attualmente come uno snapshot.

+0

Waooo che funzionava. Grazie. –

2

Non migliore soluzione tuttavia migliore di carattere personalizzato in tale attività.

ho appena rimosso

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

da attività in cui stavo cercando di cambiare il font. In quell'attività utilizzando il carattere Android predefinito che è migliore di quello personalizzato per le mie altre attività.

Problemi correlati