2015-07-02 11 views
14

Ich verwende Calligraphy Bibliothek für die Verwendung benutzerdefinierter Schriftart in meiner Anwendung. Ich habe eine benutzerdefinierte Schriftart auf meine gesamte Anwendung per Standard-Schriftart mit CalligraphyConfig, in meiner Application Klasse in der #onCreate() Methode eingestellt und es funktioniert gut. Problem tritt auf, wenn ich die Schriftart einer Aktivität ändern muss (SettingsActivity).Andere Schriftart für einige Aktivitäten mit Kalligraphie-Bibliothek

Ich habe versucht, benutzerdefinierte Schriftart in style jedoch verwenden Es hat die Schriftart der Aktivität nicht geändert.

Es folgt der Code of Style

<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> 

In Manifest

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

Bin ich allerdings Stil Methode etwas falsch mit benutzerdefinierten Schriftart zu tun? oder Gibt es eine bessere Methode, dies zu tun?

+0

hast du attachBaseContext in deiner Aktivität hinzugefügt? – EagleEye

+0

@EagleEye Ja, ich habe das getan. Wie ich schon sagte Standard-Schriftart funktioniert gut. –

+0

Sie nähern sich mit dem Stil scheint gut zu sein ... Aber ich lese in der Liesmich von Lib vielleicht etwas Interessantes: 'Default - wenn in der CalligraphyConfig definiert wird dies von keiner der oben genannten verwendet wird, oder wenn einer der oben genannten zurück eine ungültige Schriftart. "Haben Sie eine ungültige Schriftart? Es könnte ein Problem wie dieses sein (ich hoffe es ist, weil, wenn nicht, wird es komplizierter zu beheben) –

Antwort

5

Es sieht so aus, als ob AppCompat zur Laufzeit eine andere Version von Schaltflächen/Textansichten erstellt.

In Ihrem Kalligraphie Start in Ihrer Anwendung, fügen Sie die Zeile:

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

wie mit etwas, um am Ende:

@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() 
      ); 
    //.... 
} 

Und das sollte Ihre Textviews kümmern.

Edit:

Dies soll jetzt mit https://github.com/chrisjenx/Calligraphy/pull/191, die derzeit als Momentaufnahme festgelegt werden.

+0

Waooo, das arbeitete. Danke. –

2

Nicht die beste Lösung, aber besser als benutzerdefinierte Schriftart in dieser Aktivität.

ich gerade entfernt

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

von Aktivität, wo ich Schriftart zu ändern versuchte. In dieser Aktivität mit Standard-Android-Schriftart, die besser ist als diese benutzerdefinierte Schriftart für meine anderen Aktivitäten.