我正在使用这个 Android API Context.Resources.UpdateConfiguration(Configuration, DisplayMetrics),但是它已经被弃用了,所以它在更高版本的 Android 系统中不起作用。我在网上进行了研究,但只找到了 Java 解决方案,我无法在我的 Xamarin.Form 项目中将其转换为 C#。
Google 文档说它已更新为 Context.CreateConfigurationContext(Configuration),但这对我不起作用(当然,DisplayMetrics 甚至没有进化)。
public void SetStandardFontSize()
{
Configuration configuration = Android.App.Application.Context.Resources.Configuration;
configuration.FontScale = (float)1;
DisplayMetrics metrics = new DisplayMetrics();
(MainActivity.mainContext as MainActivity).WindowManager.DefaultDisplay.GetMetrics(metrics);
metrics.ScaledDensity = configuration.FontScale * metrics.Density;
//deprecated
Android.App.Application.Context.Resources.UpdateConfiguration(configuration, metrics);
}
我只是想使用上面的函数(从stackoverflow的帖子中学到的)来覆盖Android系统中字体大小的用户自定义设置。 因此,我正在寻找一种与所有版本的 Android 系统兼容的正确更新配置的方法。
非常感谢。
附言: Android.App.Application.Context.Resources.DisplayMetrics.SetTo(指标); Android.App.Application.Context.Resources.Configuration.SetTo(配置); 这仅适用于 Android 6,与已弃用的功能相同。
最佳答案
我不知道为什么,但就是这样,
protected override void AttachBaseContext(Context @base)
{
Configuration overrideConfiguration = new Configuration();
overrideConfiguration = @base.Resources.Configuration;
overrideConfiguration.SetToDefaults();
Context context = @base.CreateConfigurationContext(overrideConfiguration);
base.AttachBaseContext(context);
}
public override Resources Resources
{
get
{
Resources res = base.Resources;
Configuration config = new Configuration();
config.SetToDefaults();
res.UpdateConfiguration(config, res.DisplayMetrics);
return res;
}
}
我希望也许有人可以为我解释,但更重要的是,我希望它对其他人有用作为引用。
关于c# - 如何替换 Xamarin.Form 项目中已弃用的 Android "Context.Resources.UpdateConfiguration"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57227119/