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

标签 android font-size android-settings

<分区>

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

我已经经历了this question ,并且 我试过this answer这对 Marshmallow 非常有效。但不适用于牛轧糖。

在我的应用程序类中,我添加了这些行;

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

在 list 中,在application tag下我已经声明了;

android:configChanges="fontScale"

但这在 Nougat 设备上不起作用,即使 onConfigurationChanged 被无一异常(exception)地调用和执行。

我们将不胜感激。

最佳答案

我遇到了同样的问题。我设法通过覆盖 Activity 中的 onConfigurationChanged 而不是 Application 类并将 getBaseContext() 更改为

来解决它
this.getResources().updateConfiguration(configuration, metrics);

关于android - 在 Android 7.0 上从系统设置更改时避免更改应用程序的字体比例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43111211/

相关文章:

Android Lollipop 应用程序通知设置

android - 从 Firebase 获取特定用户的分数和类别

java - 修改 ArrayList<JPanel> 中所有 JPanel 的字体大小

css - 如何将 px 从 photoshop 转换为 css

c# - 如何在 WPF C# 中更改验证结果的字体大小

android - 如何在 PreferenceScreen 中显示 RadioButton 列表(而不是在对话框中)

android - 打算转到特定帐户的设置页面

android - kotlin 中的三元运算符

java - 如何将菜单设置为在调用 Activity 时可见?

android - 如何在jetpack Compose中居中按钮?