在xamarin上动态应用字体变化?

问题描述 投票:0回答:1

下午好,我正在研究表格中的动态调整大小和字体属性。我正在研究表格中的动态调整大小和字体属性。

目前,我已经对应用程序进行了更改,但它们仅在创建页面后应用,但我想立即.我使用了ForceLayout()方法,但它没有帮助,我还可以使用什么?

    [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;

        }
    }
}


xamarin xamarin.forms xamarin.android
1个回答
1
投票

最简单的方法是使用 动态资源.

您将这些资源存储在您的应用程序资源中,然后在整个应用程序中使用它们,在一个地方改变它们将改变整个应用程序。

例如,在你的App.xaml中,你有一个字体大小为双倍的资源。

 <x:Double x:Key="DefaultFontSize">20</x:Double>
 <x:Double x:Key="EnlargedFontSize">30</x:Double>

而你有一个DynamicResource,根据条件给自己分配一些值。

 Resources ["DynamicFontSize"] =Condition ? Resources ["DefaultFontSize"]:Resources ["EnlargedFontSize"];

上面的代码可以在任何地方根据任何条件,在哪里资源是 Application.Current.Resources

然后在你有以下代码的地方,这将被动态地改变。

<Label FontSize= {DynamicResource DynamicFontSize}
<Button FontSize= {DynamicResource DynamicFontSize}

对所有可绑定的属性都有效

Goodluck 如果你有疑问,请随时回复。

© www.soinside.com 2019 - 2024. All rights reserved.