I am using Calligraphy Library for using custom font in my application. I set a custom font to my whole application by default font using CalligraphyConfig
, in my Application
class in the #onCreate()
method and it is working fine. Problem comes when I need to change font of one activity (SettingsActivity).
I tried using custom font in style however It didn't change the font of activity.
Following is the 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>
Am I doing something wrong with custom font though style method? or Is there better method of doing this?
Looks like it's because of AppCompat creating a different version of buttons/textviews at runtime.
In your Calligraphy startup in your Application, add the line:
.addCustomStyle(AppCompatTextView.class, android.R.attr.textViewStyle)
to end up with something like:
@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()
);
//....
}
And that should take care of your textviews.
Edit:
This should now be fixed with https://github.com/chrisjenx/Calligraphy/pull/191, currently as a snapshot.