最近发现如果将手机系统的字体设置为大字体,应用中的字体将跟随系统变大,而布局大部分我们根据设计出图写死了大小,这就会导致文字显示不全。 究其原因到底是因为什么呢? Google了一下,发现原来我们为字体设置的大小为SP,而SP,不仅根据像素进行改变,还会根据系统设置的大小而改变,所以如果我们布局写死的地方,可以将字体的大小也设置位dp。 但是估计等我们发现这个问题的时候,我们的应用可能已经完成或者已经进行了一大部分了,那么怎么解决这个问题呢? 看大家的编码习惯了,如果你的应用进行了抽取,所有的Activity,都继承抽取出来的BaseActivity的话那么添加如下代码,即可解决上述问题。
代码语言:javascript复制 @Override
public Resources getResources() {
// 字体大小不跟随系统
Resources res = super.getResources();
Configuration config = new Configuration();
config.setToDefaults();
res.updateConfiguration(config, res.getDisplayMetrics());
return res;
}
原理其实很简单,在android中控制字体大小的是Configuration类中的fontScale属性,其默认值为1,会随系统调节字体大小而发生变化,我们强制让其等于默认值,就可以实现字体不随调节改变。 如果没有抽取的话,?那你就在每个Activity中去重写这个方法吧,或者,赶紧开始抽取你们的基类吧!