android - 使用书法库的某些 Activity 的不同字体

标签 android fonts android-styles

我正在使用 Calligraphy在我的应用程序中使用自定义字体的库。我在 #onCreate() 方法的 Application 类中使用 CalligraphyConfig 默认字体为我的整个应用程序设置自定义字体,它是工作正常。当我需要更改一项 Activity (SettingsActivity) 的字体时,问题就来了。

我尝试在 style 中使用自定义字体但是它并没有改变 Activity 的字体。

下面是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>

在 list 中

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

我是不是通过样式方法对自定义字体做错了什么?或者有更好的方法吗?

最佳答案

看起来是因为 AppCompat 在运行时创建了不同版本的按钮/ TextView 。

在您的应用程序的 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()
            );
    //....
}

这应该会处理您的 TextView 。

编辑:

现在应该用 https://github.com/chrisjenx/Calligraphy/pull/191 修复这个问题,目前作为快照。

关于android - 使用书法库的某些 Activity 的不同字体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31176166/

相关文章:

android - 在 Android 中遇到日语字符 "〜"的问题

android - 通过 adb-shell 命令 `fastboot erase cache` 清除手机上所有应用程序的缓存

css - 行高属性是否继承自body

android - 我怎样才能改变android :windowBackground?

android - 这是什么警告: Ignoring InnerClasses attribute for an anonymous inner class that doesn't come with an associated EnclosingMethod attribute

Android achartengine绘制多系列折线图

linux - Linux 中的 Eclipse 不透明空白字符

Python Pyglet 使用外部字体作为标签

android - 无法在布局中对齐 TextView 和 Checkbox

android - 设置以编程方式添加的 View 的样式