1、Android sp單位除了受屏幕密度影響外,還受到用戶的字體大小影響,通常情況下,建議使用sp來跟隨用戶字體大小設置。除非一些特殊的情況,不想跟隨系統字體變化的,可以使用dp”。按照這么說,布局寬高固定寫死的地方應該統一用dp顯示字體,因為一旦用戶在設置中調大字體,寬高寫死的布局顯示就亂了。
2、利用Android的Configuration類中的fontScale屬性,其默認值為1,會隨系統調節字體大小而發生變化,如果我們強制讓其等于默認值,就可以實現字體不隨調節改變,在工程的Application或BaseActivity中添加下面的代碼:
@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;
}