android 8.0的字体大小

1. 禁止字体大小跟随字体调节

在Application中重写 getResources

    //防止字体跟随系统缩放
    public final static  int FONTSCALE = 1;

    /**
     * 让字体放大无效
     *
     * @param newConfig
     */
    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        if (newConfig.fontScale != FONTSCALE) {
            getResources();
        }
        super.onConfigurationChanged(newConfig);
    }

    @Override
    public Resources getResources() {
        Resources res = super.getResources();
        if (res.getConfiguration().fontScale != FONTSCALE) {
            //非默认值
            Configuration newConfig = new Configuration();
            newConfig.setToDefaults();
            //设置默认
            res.updateConfiguration(newConfig, res.getDisplayMetrics());
        }
        return res;
    }

2. android 8.0 发现在Application中重写是无效的需要在每个使用到的Activity中重写 getResources

这里在BaseActivity中重写 getResources

    @Override
    public Resources getResources() {//还原字体大小
        Resources res = super.getResources();
        Configuration configuration = res.getConfiguration();
        if (configuration.fontScale != DoApplication.FONTSCALE) {//fontScale要缩放的比例
            configuration.fontScale = DoApplication.FONTSCALE;
            res.updateConfiguration(configuration, res.getDisplayMetrics());
        }
        return res;
    }

3. 调整系统字体进行测试

你可能感兴趣的:(android 8.0的字体大小)