防止系统字体大小的变化影响Xamarin应用程序的大小
问题描述:
因此,我注意到,如果用户手机中的字体大小更改为中等以上,我发现一个应用程序会看起来很乱,我搜索了一下,发现很多未答复或回答但不是同一个问题。 如果可能的话,我希望能够在PCL类中做到这一点,如果不可能的话,那么对我来说最有趣的平台是android,因此针对android特定的修复程序将会这样做。 这里是我的XAML代码样本,所以你可以得到一个参考:防止系统字体大小的变化影响Xamarin应用程序的大小
<Label Text="STORE" FontSize="23" HeightRequest="40" WidthRequest="212" VerticalTextAlignment="Center" HorizontalTextAlignment="Center"></Label>
所以要明确的问题是如何防止从覆盖我的字体大小是在这种情况下,23系统?
谢谢
答
你见过本书第5章的内容吗? https://developer.xamarin.com/guides/xamarin-forms/creating-mobile-apps-xamarin-forms/
虽然不是一个确切的答案,但取决于您正在尝试做什么,您可能可以使用修改后的章节末尾的示例以允许“最大”字体大小。全部来自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);
}
}
}
对于Xamarin选择器控件没有字号属性,所以我们可以把它添加到App类:
public static double NormalFontSize => Device.GetNamedSize(NamedSize.Medium, typeof(Picker));
,然后利用它在选择器渲染器:
Control.SetTextSize(Android.Util.ComplexUnitType.Dip, (float)App.NormalFontSize);
而且通过改变我们可以设置为选择器的任何所需的字体大小此NormalFontSize属性,因为它是不AVA无需渲染器即可使用。