use*_*767 3 xamarin xamarin.forms
这返回null:
DefaultFontFamily = Font.SystemFontOfSize(NamedSize.Default).FontFamily;
Run Code Online (Sandbox Code Playgroud)
还有这个:
DefaultFontFamily = new Label().FontFamily;
Run Code Online (Sandbox Code Playgroud)
正确的做法是什么?
没有正确的方法可以做到这一点 - 因为这里没有跨平台的“默认字体系列”,而且它是特定于平台的。
为了进一步详细说明,希望参考源代码中定义的此属性Label,
public static readonly BindableProperty FontFamilyProperty = FontElement.FontFamilyProperty;
Run Code Online (Sandbox Code Playgroud)
反过来,它指的是 中定义的依赖属性FontElement,
public static readonly BindableProperty FontFamilyProperty =
BindableProperty.Create("FontFamily", typeof(string), typeof(IFontElement), default(string),
propertyChanged: OnFontFamilyChanged);
Run Code Online (Sandbox Code Playgroud)
或您提到的静态方法SystemFontOfSize。
public static Font SystemFontOfSize(NamedSize size)
{
var result = new Font { NamedSize = size };
return result;
}
Run Code Online (Sandbox Code Playgroud)
如您所见,在这两种情况下,根据源代码,'null'for的值FontFamily并不意外。(在第一种情况下,依赖属性定义为默认值 asdefault(string)转换为 null,在第二种情况下,FontFamily永远不会设置值)
也一样Font.Default。在进一步挖掘时,您会发现IsDefault其定义如下:
public bool IsDefault
{
get { return FontFamily == null && FontSize == 0 && NamedSize == NamedSize.Default && FontAttributes == FontAttributes.None; }
}
Run Code Online (Sandbox Code Playgroud)
因此,如果FontFamily是null,则它是xamarin 形式生态系统中的默认值。
当Label在特定平台上呈现时,除非它的FontFamily属性被专门修改'null'为某个值,否则本机控件上的字体属性也不会被修改。因此,本机控件使用该平台的默认字体系列呈现。
为了获得默认字体,您必须实现本机服务,并使用依赖注入来获取该值。
有关用于的本机控件的更多详细信息Label- 您可以参考此链接。
| 归档时间: |
|
| 查看次数: |
4818 次 |
| 最近记录: |