對於程序員來說,我們很少會去設置手機的字體大小,因此也不會出現設置字體後App界面變化。
但是近期由於我們開發的項目中嵌套的H5頁面太多,很多手機適配都沒有問題,唯獨有一款紅米Note2在加載H5頁面後變的面目全非,後來又採購了一臺紅米note2適配是沒有問題的。經過排查原因是,最初的紅米note2字體設置爲大號字體。因此導致了原來的字體(sp)都會放大1.2倍,使界面不是預期的了。
經過一番折騰最終解決方案是在Activity裏面覆蓋下原來的getResources()方法
@Override
public Resources getResources() {
Resources res = super.getResources();
Configuration config = new Configuration();
//得到一個配置
config.setToDefaults();
//給這個配置設置成預設值,也就是fontScale的值(這裏取值爲1)
res.updateConfiguration(config, res.getDisplayMetrics());
//更新資源裏面的配置
return res;
}
這樣就解決了字體的問題,主要的內容是設置了fontScale的值爲1,而不是系統設置的值。
下面是默認的getResources()方法
@Override
public Resources getResources() {
return super.getResources();
}
可以看出這個是直接返回一個Resources,這裏fontScale的取值分別是取的系統設置的值分別爲: 小號0.9,標準1,中號1.06,大號1.12