Android 设置字体大小不跟随系统

2019-08-14 10:09:54 浏览数 (1)

最近发现如果将手机系统的字体设置为大字体,应用中的字体将跟随系统变大,而布局大部分我们根据设计出图写死了大小,这就会导致文字显示不全。 究其原因到底是因为什么呢? 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中去重写这个方法吧,或者,赶紧开始抽取你们的基类吧!

0 人点赞