android設置系統文字大小後App的文字會變化

對於程序員來說,我們很少會去設置手機的字體大小,因此也不會出現設置字體後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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章