有一些APP会有中老年人使用,他们视力不佳,习惯性的设置大字体模式。然而,在大字体模式下,有些页面会变形。我经过考虑之后,采用【设计】+【技术】的方式解决此问题。
技术方面
在android端,影响大字体模式的因素有2个,分别是【字体】、【显示模式】。即使没有改变字体,通过调整显示模式,也可以让页面的字体变大。本文只能解决放大【字体】导致的大字体模式,【显示模式】还没有找到合适的解决办法。如果有读者知道如何解决,请赐教。
放大【字体】的大字体模式解决办法
在Activity页面,通过获取系统的字体放大倍数,把倍数设置为1,从而保存Activity页面的字体大小不变。代码如下:
/**
* 重写 getResource 方法,防止系统字体影响
*/
@Override
public Resources getResources() {
//禁止app字体大小跟随系统字体大小调节
Resources resources = super.getResources();
if (resources != null && resources.getConfiguration().fontScale != 1.0f) {
android.content.res.Configuration configuration = resources.getConfiguration();
configuration.fontScale = 1.0f;
resources.updateConfiguration(configuration, resources.getDisplayMetrics());
}
return resources;
}
【注意】有人说,把这个方法在自定义Application中重写会生效。但是我发现,如果不在Activity中重写,只在Application中重写,实际测试是没有效果的。所以我建议在Activity层面重写,而不是Application层面。