Xaml 防止系统大小更改影响Xamarin应用程序中的大小

Xaml 防止系统大小更改影响Xamarin应用程序中的大小,xaml,xamarin,xamarin.android,portable-class-library,Xaml,Xamarin,Xamarin.android,Portable Class Library,因此,我注意到,如果用户手机中的字体大小改为中等以上,我制作的一个应用程序就会看起来一团糟。我在谷歌上搜索了一下,发现有许多问题没有答案,但没有找到相同的问题。 如果可能的话,我希望能够在PCL类中做到这一点,如果不可能的话,那么对我来说最有趣的平台是android,所以针对android的修复就可以了。 以下是我的Xaml代码示例,您可以获得参考: <Label Text="STORE" FontSize="23" HeightRequest="40" WidthRequest="2

因此,我注意到,如果用户手机中的字体大小改为中等以上,我制作的一个应用程序就会看起来一团糟。我在谷歌上搜索了一下,发现有许多问题没有答案,但没有找到相同的问题。 如果可能的话,我希望能够在PCL类中做到这一点,如果不可能的话,那么对我来说最有趣的平台是android,所以针对android的修复就可以了。 以下是我的Xaml代码示例,您可以获得参考:

 <Label  Text="STORE" FontSize="23" HeightRequest="40" WidthRequest="212" VerticalTextAlignment="Center" HorizontalTextAlignment="Center"></Label>

所以要明确的问题是,如何防止系统覆盖我的fontsize,在这种情况下是23


谢谢

您看过本书第五章的内容了吗?

虽然不是一个确切的答案,但根据您试图做的事情,您可能可以使用本章末尾的示例进行修改,以允许使用“最大”字体大小。全部来自PCL内部


然而,值得注意的是,无法将字体缩放到大尺寸可能是易访问性问题的一个迹象。

对于那些仍在努力在Android上禁用易访问性字体缩放的人来说。 您需要为标签、按钮和常用输入控件创建自定义渲染器,如下所示:

using Xamarin.Forms;
using Xamarin.Forms.Platform.Android;

[assembly: ExportRenderer(typeof(Label), typeof(MyApp.Droid.Renderers.LabelRendererDroid))]
namespace MyApp.Droid.Renderers
{
    class LabelRendererDroid : LabelRenderer
    {
        protected override void OnElementChanged(ElementChangedEventArgs<Label> e)
        {
            base.OnElementChanged(e);
            if (e.NewElement == null) return;
            Control.SetTextSize(Android.Util.ComplexUnitType.Dip, (float)e.NewElement.FontSize);
        }
    }
}
然后在选择器渲染器中使用它:

Control.SetTextSize(Android.Util.ComplexUnitType.Dip, (float)App.NormalFontSize);

另外,通过更改此NormalFontSize属性,我们可以为picker设置所需的任何字体大小,因为如果没有渲染器,它将不可用。

只需在创建后将其添加到MainActivity中即可

        #region Font size change Prevent
        public override Resources Resources
        {
            get
            {
                var config = new Configuration();
                config.SetToDefaults();
                return CreateConfigurationContext(config).Resources;
            }
        }
        #endregion Font size change Prevent

Gary McGee为标签和按钮构建了精确的自定义渲染器类。此外,BrianLK还提供了一种方法,该方法可以在以后的线程中为条目执行大部分工作。祝你好运当用户将字体大小设置得太大时,出现字体大小溢出对话框问题。这通过将FontScale重置为1作为默认值解决了问题。
        #region Font size change Prevent
        public override Resources Resources
        {
            get
            {
                var config = new Configuration();
                config.SetToDefaults();
                return CreateConfigurationContext(config).Resources;
            }
        }
        #endregion Font size change Prevent