日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

Android APP 全局字体替换-思源黑体

發(fā)布時(shí)間:2023/12/10 61 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android APP 全局字体替换-思源黑体 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

關(guān)于字體設(shè)置的屬性及替換方式,可以參考如下文章:

  • Android字體系列 (一):Android字體基礎(chǔ)
  • Android字體系列 (四):全局替換字體方式
  • Android官方文檔-XML 中的字體
    以上文章已經(jīng)詳細(xì)介紹如何更換字體了,本文僅介紹字體更換的操作及注意事項(xiàng)。

全局更換字體操作流程

  • 字體放置到 res/font 目錄
    如使用思源黑體 font/noto_sans_sc.otf
  • 主題中使用 android:fontFamily 指定字體
  • <item name="android:fontFamily">@font/noto_sans_sc</item>
  • 將主題應(yīng)用到 Activity
  • 其他情況處理

    完成上一步之后,對(duì)應(yīng)的Activity,包括其中彈出的Dialog中的文本的字體就已經(jīng)更改了,但是實(shí)踐中有一些其他情況需要處理。

    Toast 字體替換

    使用自定義Toast,然后設(shè)置其中 TextView 的字體

    Typeface font = null;try {font = ResourcesCompat.getFont(context, sCustomFontResId);} catch (Resources.NotFoundException ignore) {Log.e("ToastUtils", "customFont not found: " + sCustomFontResId);}if (font != null) {view.setTypeface(font);view.setIncludeFontPadding(false);}Toast toast = new Toast(context);toast.setView(view);

    思源黑體的 fontPadding 處理

    發(fā)現(xiàn)使用思源黑體之后,TextView 的垂直邊距及行間距出現(xiàn)了問題:

  • 上下邊距變寬;
  • 換行后文本行間距變窄;
  • 對(duì)于上述問題,解決方案如下:

  • 上下邊距變寬;
    在主題中加入 android:includeFontPadding 的配置,將其值設(shè)置為 false
  • <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"><item name="android:fontFamily">@font/noto_sans_sc</item><item name="android:includeFontPadding">false</item> </style>
  • 換行后文本行間距變窄;
    發(fā)現(xiàn)是早期的思源黑體字體的問題,下載使用較新版本的 思源黑體 不存在此問題;
  • 字體變體加載過多導(dǎo)致內(nèi)存溢出問題處理

    部分字體存在多種不同字重,如思源黑體存在7中字重的文件,如果全部加載到內(nèi)存中,則部分VM內(nèi)存較小的設(shè)備會(huì)直接OOM崩潰,故只引入normal字重(400)的字體

    總結(jié)

  • 引入字體
    noto_sans_sc_regular 字體文件拷貝到res/font 目錄,并添加 noto_sans_sc.xml 的字體定義文件:
  • <?xml version="1.0" encoding="utf-8"?> <font-family xmlns:tools="http://schemas.android.com/tools"xmlns:app="http://schemas.android.com/apk/res-auto"tools:ignore="ResourceName"><fontapp:font="@font/noto_sans_sc_regular"app:fontStyle="normal"app:fontWeight="400"/> </font-family>

    需要使用 app 的 namespace 確保向下兼容性

  • 主題配置
  • <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"><item name="android:fontFamily">@font/noto_sans_sc</item><item name="android:includeFontPadding">false</item> </style>
  • 其他 TextView 字體替換
  • ResourcesCompat.getFont(context, sCustomFontResId) view.setTypeface(font); view.setIncludeFontPadding(false);

    總結(jié)

    以上是生活随笔為你收集整理的Android APP 全局字体替换-思源黑体的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。