我正在 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设备也无效。
任何帮助将不胜感激。
答案 0 :(得分:1)
我遇到了同样的问题。我设法通过覆盖Activity中的onConfigurationChanged
而不是Application class&来解决它。将getBaseContext()
更改为
this.getResources().updateConfiguration(configuration, metrics);