簡體   English   中英

使用書法圖書館的一些活動的不同字體

[英]Different font for Some activities using Calligraphy Library

我正在使用書法庫在我的應用程序中使用自定義字體。 我使用CalligraphyConfig在我的Application類的#onCreate()方法中使用默認字體為我的整個應用程序設置了一個自定義字體,它運行正常。 當我需要更改一個活動的字體(SettingsActivity)時出現問題。

我嘗試在樣式中使用自定義字體,但它沒有更改活動的字體。

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

在清單中

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

我是否通過樣式方法使用自定義字體做錯了什么? 或者有更好的方法嗎?

看起來是因為AppCompat在運行時創建了不同版本的按鈕/文本視圖。

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

這應該照顧你的textviews。

編輯:

現在應該使用https://github.com/chrisjenx/Calligraphy/pull/191修復此問題,目前作為快照。

不是最佳解決方案,但比該活動中的自定義字體更好。

我剛剛刪除

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

從我試圖改變字體的活動。 在該活動中使用默認的android字體,這比我的其他活動的自定義字體更好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM