[英]How to allow to override the font family of a library in Android
我制作了一個包含可視化組件的 Android 庫。 此組件樣式必須可由主托管應用程序通過資源文件進行自定義。
為了讓字體系列可定制,我定義了一個字符串
<string name="customizableFontFamily" translatable="false">sans-serif</string>
用於主主題風格:
<style name="MyMainTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:fontFamily">@string/customizableFontFamily</item>
這在使用基本的 Android 字體(休閑、等寬、無襯線等)時效果很好。 但是,如果用戶想要定義自定義字體,則它不起作用,因為它必須指向引用:
<string name="customizableFontFamily" translatable="false">@font/myFont</string>
有什么辦法可以做到這一點嗎?
您可以定義自定義TextAppearance
並更改您的 ui 組件以使用它而不是簡單的 fontFamily。
就像是:
<style name="TextAppearance.MyApp.Headline1" parent="TextAppearance.MaterialComponents.Headline1">
...
<item name="fontFamily">@font/custom_font</item>
<item name="android:textStyle">normal</item>
<item name="android:textAllCaps">false</item>
<item name="android:textSize">64sp</item>
<item name="android:letterSpacing">0</item>
...
</style>
通過這種方式,使用您的庫的應用程序可以自定義這些值。
很快,材料設計庫中包含的所有組件都將引用這些可主題化的文本屬性。
您可以在此處閱讀更多內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.