Android 兼容8.0及以上 App全局字体调节、禁止App字体随系统字体大小而更改

在APP中,字体的大小单位一般会用sp,然而在改变系统字体大小时,App字体就会随着系统字体大小改变而改变,这就可能造成APP布局的错位。

造成这种情况的原因是,sp单位除了受屏幕密度影响外,还受到用户的字体大小影响,通常情况下,建议使用sp来跟随用户字体大小设置。除非一些特殊的情况,不想跟随系统字体变化的,可以使用dp”。按照这么说,布局宽高固定写死的地方应该统一用dp显示字体,因为一旦用户在设置中调大字体,宽高写死的布局显示就乱了。

针对这种情况,查找网上的方法也很多,大多是这样的方法 (重写 Application 或 BaseActivity 中的方法):

/**
   * 重写 getResource 方法,防止系统字体影响
   */
  @Override
  public Resources getResources() {//禁止app字体大小跟随系统字体大小调节
    Resources resources = super.getResources();
    if (resources != null && resources.getConfiguration().fontScale != 1.0f) {
      android.content.res.Configuration configuration = resources.getConfiguration();
      configuration.fontScale = 1.0f;
      resources.updateConfiguration(configuration, resources.getDisplayMetrics());
    }
    return resources;
  }

如何有更好的方案,请给与连接或说明

你可能感兴趣的:(Android 兼容8.0及以上 App全局字体调节、禁止App字体随系统字体大小而更改)