2017-04-08 85 views
2

因此,我注意到,如果用户手机中的字体大小更改为中等以上,我发现一个应用程序会看起来很乱,我搜索了一下,发现很多未答复或回答但不是同一个问题。 如果可能的话,我希望能够在PCL类中做到这一点,如果不可能的话,那么对我来说最有趣的平台是android,因此针对android特定的修复程序将会这样做。 这里是我的XAML代码样本,所以你可以得到一个参考:防止系统字体大小的变化影响Xamarin应用程序的大小

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

所以要明确的问题是如何防止从覆盖我的字体大小是在这种情况下,23系统?

谢谢

回答

0

对于那些仍然努力如何禁用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); 
     } 
    } 
} 

对于Xamarin选择器控件没有字号属性,所以我们可以把它添加到App类:

public static double NormalFontSize => Device.GetNamedSize(NamedSize.Medium, typeof(Picker)); 

,然后利用它在选择器渲染器:

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

而且通过改变我们可以设置为选择器的任何所需的字体大小此NormalFontSize属性,因为它是不AVA无需渲染器即可使用。

相关问题