gpt4 book ai didi

c# - 如何替换 Xamarin.Form 项目中已弃用的 Android "Context.Resources.UpdateConfiguration"?

转载 作者:行者123 更新时间:2023-11-29 22:57:47 25 4
gpt4 key购买 nike

我正在使用这个 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com