在xamarin上动态应用字体更改?
下午好。我正在研究表单中的动态大小调整和字体属性 目前,我已经对应用程序进行了更改,但这些更改仅在创建页面后应用,但我希望立即进行更改。 我使用了ForceLayout()方法,但它没有帮助,我还可以使用什么在xamarin上动态应用字体更改?,xamarin,xamarin.forms,xamarin.android,Xamarin,Xamarin.forms,Xamarin.android,下午好。我正在研究表单中的动态大小调整和字体属性 目前,我已经对应用程序进行了更改,但这些更改仅在创建页面后应用,但我希望立即进行更改。 我使用了ForceLayout()方法,但它没有帮助,我还可以使用什么 [assembly: Dependency(typeof(ChangeFontAndroid))] namespace SpecialForcesDirectory.Droid { public class ChangeFontAndroid : IScaleFont
[assembly: Dependency(typeof(ChangeFontAndroid))]
namespace SpecialForcesDirectory.Droid
{
public class ChangeFontAndroid : IScaleFont
{
public void Scale(float val)
{
var configuration = Resources.System.Configuration;
configuration.FontScale = (float)val;
MainActivity.AppContext.Resources.Configuration.UpdateFrom(configuration);
MainActivity.AppContext.Resources.DisplayMetrics.ScaledDensity = configuration.FontScale * (float)DeviceDisplay.MainDisplayInfo.Density;
}
}
}
最简单的方法是使用 您将这些资源存储在应用程序资源中,然后在整个应用程序中使用它们。在一个位置更改这些资源将在整个应用程序中更改它们 例如,您的App.xaml中有一个双精度字体:
<x:Double x:Key="DefaultFontSize">20</x:Double>
<x:Double x:Key="EnlargedFontSize">30</x:Double>
上述代码可以是任何条件下的任何地方,其中的资源是Application.Current.Resources
如果您有以下代码,则会动态更改:
<Label FontSize= {DynamicResource DynamicFontSize}
<Button FontSize= {DynamicResource DynamicFontSize}
很好的解决方案。A我想先试试。但现在在项目中超过了50页和~400个控件。不管你有多少页,它都会工作。你只需要使用动态资源:)用于应用程序编号。对我来说是的。在许多位置替换xaml的许多猴子作业。发现你的文章,在网络上,非常令人印象深刻。
<Label FontSize= {DynamicResource DynamicFontSize}
<Button FontSize= {DynamicResource DynamicFontSize}