最近發(fā)現(xiàn)如果將手機(jī)系統(tǒng)的字體設(shè)置為大字體侣监,應(yīng)用中的字體將跟隨系統(tǒng)變大鸭轮,而布局大部分我們根據(jù)設(shè)計(jì)出圖寫死了大小,這就會(huì)導(dǎo)致文字顯示不全橄霉。
究其原因到底是因?yàn)槭裁茨兀?br>
Google了一下窃爷,發(fā)現(xiàn)原來(lái)我們?yōu)樽煮w設(shè)置的大小為SP,而SP姓蜂,不僅根據(jù)像素進(jìn)行改變按厘,還會(huì)根據(jù)系統(tǒng)設(shè)置的大小而改變,所以如果我們布局寫死的地方钱慢,可以將字體的大小也設(shè)置位dp刻剥。
但是估計(jì)等我們發(fā)現(xiàn)這個(gè)問(wèn)題的時(shí)候,我們的應(yīng)用可能已經(jīng)完成或者已經(jīng)進(jìn)行了一大部分了滩字,那么怎么解決這個(gè)問(wèn)題呢?
看大家的編碼習(xí)慣了御吞,如果你的應(yīng)用進(jìn)行了抽取麦箍,所有的Activity,都繼承抽取出來(lái)的BaseActivity的話那么添加如下代碼陶珠,即可解決上述問(wèn)題挟裂。
@Override
public Resources getResources() {
// 字體大小不跟隨系統(tǒng)
Resources res = super.getResources();
Configuration config = new Configuration();
config.setToDefaults();
res.updateConfiguration(config, res.getDisplayMetrics());
return res;
}
原理其實(shí)很簡(jiǎn)單,在android中控制字體大小的是Configuration類中的fontScale屬性揍诽,其默認(rèn)值為1诀蓉,會(huì)隨系統(tǒng)調(diào)節(jié)字體大小而發(fā)生變化,我們強(qiáng)制讓其等于默認(rèn)值暑脆,就可以實(shí)現(xiàn)字體不隨調(diào)節(jié)改變渠啤。
如果沒(méi)有抽取的話,??那你就在每個(gè)Activity中去重寫這個(gè)方法吧添吗,或者沥曹,趕緊開始抽取你們的基類吧!