美文网首页
Android-让字体大小不跟随系统设置变化、

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

作者: 晴天ccc | 来源:发表于2023-02-19 11:31 被阅读0次

前言

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);
    }

相关文章

网友评论

      本文标题:Android-让字体大小不跟随系统设置变化、

      本文链接:https://www.haomeiwen.com/subject/lzrikdtx.html