Resources.UpdateConfiguration已过时

时间:2019-07-19 03:51:47

标签: c# xamarin.forms xamarin.android

我想防止系统字体大小改变,从而影响我的xamarin表单android应用程序。我尝试使用MainActivity.cs中的以下代码及其工作方式,但它告诉我(res.UpdateConfiguration)已弃用。我尝试了其他一些代码,但是没有运气。

public override Resources Resources
{
    get
    {
        Resources res = base.Resources;
        Configuration config = new Configuration();
        config.SetToDefaults();
        res.UpdateConfiguration(config, res.DisplayMetrics);
        return res;
    }

}

2 个答案:

答案 0 :(得分:1)

context.getResources().updateConfiguration()已在Android API 25中弃用,建议改用context.createConfigurationContext()。

public override Resources Resources
{
  get
  {              
   Configuration config = new Configuration();
   config.SetToDefaults();

   Context context = CreateConfigurationContext(config);
   Resources resources = context.Resources;

   return resources;
  }
}

选中Android context.getResources.updateConfiguration() deprecated

更新

如果要更改字体大小,则应覆盖方法AttachBaseContext

protected override void AttachBaseContext(Context @base)
{
  // base.AttachBaseContext(@base);
  Configuration config = new Configuration();
  config.SetToDefaults();
  config.FontScale = 1.0f;
  Context context = @base.CreateConfigurationContext(config);
  base.AttachBaseContext(context);
}

答案 1 :(得分:0)

如果您不喜欢使用受保护的覆盖,则可以使用

private void initFontScale()
{
     Configuration configuration = Resources.Configuration;
     configuration.FontScale = (float)1.45;
     //0.85 small, 1 standard, 1.15 big,1.3 more bigger ,1.45 supper big 
     DisplayMetrics metrics = new DisplayMetrics();
     WindowManager.DefaultDisplay.GetMetrics(metrics);
     metrics.ScaledDensity = configuration.FontScale * metrics.Density;
     BaseContext.ApplicationContext.CreateConfigurationContext(configuration); BaseContext.Resources.DisplayMetrics.SetTo(metrics);
}

protected override void OnCreate(Bundle bundle)
{
    initFontScale();
    ...
}