Android-让字体大小不跟随系统设置变化、

前言

APP主题的字体模块,如果用户把系统字体设置的很大,就会影响我们APP的显示效果,如果不想被影响/自定义字体大小,就需要忽略系统字体的设置参数

方法一(不是很推荐):

使用:在基类的BaseActivity中添加如下代码即可。如果没有抽取的话,那你就在每个Activity中去重写一下这个方法

原理:在Android中控制字体大小的是Configuration类中的fontScale属性,其默认值为1,会随系统调节字体大小而发生变化,我们强制让其等于默认值,就可以实现字体不随调节改变。

缺点:getResources()方法,会在页面获取资源时多次调用,比如用手点一下页面任意位置,就会多次调用此函数,频繁调用浪费资源。

    // 字体大小不跟随系统
    @Override
    public Resources getResources() {
        Resources res = super.getResources();
        Configuration config = new Configuration();
        config.setToDefaults(); // 设置为默认值
        res.updateConfiguration(config, res.getDisplayMetrics());
        return res;
    }

方法二(强烈推荐):

使用:在基类的BaseActivity中添加如下代码即可。

原理:基类Activity,在初始化 Context 时,将 字体缩放比例(fontScale)始终设置为1

    // 字体大小不跟随系统
    @Override
    protected void attachBaseContext(Context newBase) {
        super.attachBaseContext(getConfigurationContext(newBase));
    }

    private static Context getConfigurationContext(Context context) {
        Configuration configuration = context.getResources().getConfiguration();
        configuration.fontScale = 1;
        return context.createConfigurationContext(configuration);
    }

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容