由于公司的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”作为字体单位。
这里只做一下记录!!