簡體   English   中英

如何允許在 Android 中覆蓋庫的字體系列

[英]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.

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