Android 設(shè)置字體大小不跟隨系統(tǒng)

最近發(fā)現(xiàn)如果將手機系統(tǒng)的字體設(shè)置為大字體,應(yīng)用中的字體將跟隨系統(tǒng)變大,而布局大部分我們根據(jù)設(shè)計出圖寫死了大小,這就會導(dǎo)致文字顯示不全。
究其原因到底是因為什么呢?
Google了一下,發(fā)現(xiàn)原來我們?yōu)樽煮w設(shè)置的大小為SP,而SP,不僅根據(jù)像素進(jìn)行改變,還會根據(jù)系統(tǒng)設(shè)置的大小而改變,所以如果我們布局寫死的地方,可以將字體的大小也設(shè)置位dp。
但是估計等我們發(fā)現(xiàn)這個問題的時候,我們的應(yīng)用可能已經(jīng)完成或者已經(jīng)進(jìn)行了一大部分了,那么怎么解決這個問題呢?
看大家的編碼習(xí)慣了,如果你的應(yīng)用進(jìn)行了抽取,所有的Activity,都繼承抽取出來的BaseActivity的話那么添加如下代碼,即可解決上述問題。

 @Override
   public Resources getResources() {
       // 字體大小不跟隨系統(tǒng)
       Resources res = super.getResources();
       Configuration config = new Configuration();
       config.setToDefaults();
       res.updateConfiguration(config, res.getDisplayMetrics());
       return res;
   }

原理其實很簡單,在android中控制字體大小的是Configuration類中的fontScale屬性,其默認(rèn)值為1,會隨系統(tǒng)調(diào)節(jié)字體大小而發(fā)生變化,我們強制讓其等于默認(rèn)值,就可以實現(xiàn)字體不隨調(diào)節(jié)改變。
如果沒有抽取的話,??那你就在每個Activity中去重寫這個方法吧,或者,趕緊開始抽取你們的基類吧!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容