从Android 7.0上的系统设置更改时,避免更改应用程序的字体比例

时间:2017-03-30 07:27:00

标签: android font-size android-settings

我正在 LGE Nexus 5x 上运行 Android 7.0 &我想限制任何系统字体更改以更改我的应用程序字体大小。

我已经完成this question了 我尝试了this answer,它完美地适用于棉花糖。但是不能在Nougat上工作。

在我的Application类中,我添加了这些行;

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    adjustFontScale(new Configuration(newConfig));
}


public void adjustFontScale(Configuration configuration) {
    if (configuration != null && configuration.fontScale != 1.0) {
        configuration.fontScale = (float) 1.0;
        DisplayMetrics metrics = getResources().getDisplayMetrics();
        WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);
        wm.getDefaultDisplay().getMetrics(metrics);
        metrics.scaledDensity = configuration.fontScale * metrics.density;
        getBaseContext().getResources().updateConfiguration(configuration, metrics);
    }
}

在清单中,application tag我已声明;

android:configChanges="fontScale"

但即使在没有任何异常的情况下调用和执行onConfigurationChanged,这对Nougat设备也无效。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

我遇到了同样的问题。我设法通过覆盖Activity中的onConfigurationChanged而不是Application class&来解决它。将getBaseContext()更改为

this.getResources().updateConfiguration(configuration, metrics);