我想防止系统字体大小改变,从而影响我的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;
}
}
答案 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();
...
}