由於公司的App面向的用戶有小部分人是“大叔”級別的,他們喜歡把系統字體設置得很大,爲了App字體不受系統字體大小影響,於是在網上搜了一下,大概有2中解決辦法。
更新App的配置
簡單的來說,就是重寫我們BaseActivity的getResources方法
@Override
public void onConfigurationChanged(Configuration newConfig) {
if (newConfig.fontScale != 1)//非默認值
getResources();
super.onConfigurationChanged(newConfig);
}
@Override
public Resources getResources() {
Resources res = super.getResources();
if (res.getConfiguration().fontScale != 1) {//非默認值
Configuration newConfig = new Configuration();
newConfig.setToDefaults();//設置默認
res.updateConfiguration(newConfig, res.getDisplayMetrics());
}
return res;
}
這樣有個壞處,我嘗試使用過這種方法,會導致UI線程執行到這裏會有卡頓現象!
所以我們可以使用第二種方法。
使用dp來設置文字的大小
我們設置字體大小,一般都使用“sp”作爲單位的,我們來說說“sp”和“dp”的區別:
- 使用sp作爲字體大小單位,會隨着系統的字體大小改變
- 而dp作爲單位則不會
所以我們在設置字體時,如果不想佈局由於系統字體大小影響的,可以使用“dp”作爲字體的單位。
沒有這方便需求的,我們還是以“sp”作爲字體單位。
這裏只做一下記錄!!