在Android开发中针对字体大小的设置,虽然使用google推荐sp作为字体的单位,但是如果用户在系统设置的”显示“中修改了系统默认的字体大小。就会直接影响到所有sp为单位的字体适配,所以很多app在设置了系统字体后瞬间变得面目全非。
针对该问题,大概有两种解决思路:1、不用sp作为系统字体的单位,改用dp,这在一些应用中也是很常见的(反编译QQ,貌似就是这样做的);2、重写getResource()方法,可以在activity基类(app中所有的activity都继承的一个activity类)中加上以下代码:
@Override
public Resources getResources() {
Resources res =super.getResources();
Configuration config =new Configuration();
config.setToDefaults();
res.updateConfiguration(config, res.getDisplayMetrics());
returnres;
}
在这段代码中new了一个Configuration对象,并通过 setToDefaults()方法将其设为了系统默认的配置,此方法要想生效需调用Resources的updateConfiguration (Configurationconfig, DisplayMetrics metrics)方法。
我一般使用第二种方法,这样的话,不论在设置中怎样更改字体大小都会显示我们定义的大小,不会导致屏幕布局混乱。