使用书法库的某些活动的不同字体
Different font for Some activities using Calligraphy Library
我正在使用 Calligraphy 库在我的应用程序中使用自定义字体。我在 Application
class 中的 #onCreate()
方法中使用 CalligraphyConfig
默认字体为我的整个应用程序设置了自定义字体,并且工作正常。当我需要更改一个 activity (SettingsActivity) 的字体时,问题就来了。
我尝试在 style 中使用自定义字体,但是它并没有改变 activity 的字体。
样式代码如下
<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>
在清单中
<activity
android:name=".SettingsActivity"
android:theme="@style/EnglishActivitiesTheme"
android:parentActivityName=".MainActivity" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".MainActivity" />
</activity>
我是不是通过样式方法对自定义字体做错了什么?或者有更好的方法吗?
不是最佳解决方案,但比 activity 中的自定义字体更好。
我刚刚删除了
@Override
protected void attachBaseContext(Context newBase) {
super.attachBaseContext(CalligraphyContextWrapper.wrap(newBase));
}
来自 activity 我试图更改字体的地方。在 That activity 中使用默认 android 字体,这比我的其他活动的自定义字体更好。
看起来是因为 AppCompat 在运行时创建了不同版本的 buttons/textviews。
在应用程序的 Calligraphy 启动中,添加以下行:
.addCustomStyle(AppCompatTextView.class, android.R.attr.textViewStyle)
以这样的方式结束:
@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()
);
//....
}
这应该会处理您的文本视图。
编辑:
现在应该用 https://github.com/chrisjenx/Calligraphy/pull/191 解决这个问题,目前是一个快照。
我正在使用 Calligraphy 库在我的应用程序中使用自定义字体。我在 Application
class 中的 #onCreate()
方法中使用 CalligraphyConfig
默认字体为我的整个应用程序设置了自定义字体,并且工作正常。当我需要更改一个 activity (SettingsActivity) 的字体时,问题就来了。
我尝试在 style 中使用自定义字体,但是它并没有改变 activity 的字体。
样式代码如下
<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>
在清单中
<activity
android:name=".SettingsActivity"
android:theme="@style/EnglishActivitiesTheme"
android:parentActivityName=".MainActivity" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".MainActivity" />
</activity>
我是不是通过样式方法对自定义字体做错了什么?或者有更好的方法吗?
不是最佳解决方案,但比 activity 中的自定义字体更好。
我刚刚删除了
@Override
protected void attachBaseContext(Context newBase) {
super.attachBaseContext(CalligraphyContextWrapper.wrap(newBase));
}
来自 activity 我试图更改字体的地方。在 That activity 中使用默认 android 字体,这比我的其他活动的自定义字体更好。
看起来是因为 AppCompat 在运行时创建了不同版本的 buttons/textviews。
在应用程序的 Calligraphy 启动中,添加以下行:
.addCustomStyle(AppCompatTextView.class, android.R.attr.textViewStyle)
以这样的方式结束:
@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()
);
//....
}
这应该会处理您的文本视图。
编辑:
现在应该用 https://github.com/chrisjenx/Calligraphy/pull/191 解决这个问题,目前是一个快照。