默认字体系列是什么?

2024-01-26

这返回null:

DefaultFontFamily = Font.SystemFontOfSize(NamedSize.Default).FontFamily;

还有这个:

DefaultFontFamily = new Label().FontFamily;

正确的做法是什么?


没有正确的方法来做到这一点 - 因为这里没有跨平台的“默认字体系列”,而且它是特定于平台的。

为了进一步详细说明这一点,想参考源代码中定义的此属性Label https://github.com/xamarin/Xamarin.Forms/blob/master/Xamarin.Forms.Core/Label.cs#L30,

public static readonly BindableProperty FontFamilyProperty = FontElement.FontFamilyProperty;

这又指的是定义在的依赖属性FontElement https://github.com/xamarin/Xamarin.Forms/blob/master/Xamarin.Forms.Core/FontElement.cs#L11,

public static readonly BindableProperty FontFamilyProperty =
        BindableProperty.Create("FontFamily", typeof(string), typeof(IFontElement), default(string),
                                propertyChanged: OnFontFamilyChanged);

或您提到的静态方法SystemFontOfSize https://github.com/xamarin/Xamarin.Forms/blob/master/Xamarin.Forms.Core/Font.cs#L67.

public static Font SystemFontOfSize(NamedSize size)
{
    var result = new Font { NamedSize = size };
    return result;
}

正如您所看到的,在这两种情况下,根据源代码,值'null' for FontFamily并不意外。 (在第一种情况下,依赖属性的默认值定义为default(string)这会转换为 null,在第二种情况下,值为FontFamily从未设置)

同样适用于Font.Default https://github.com/xamarin/Xamarin.Forms/blob/master/Xamarin.Forms.Core/Font.cs#L26。进一步挖掘,你会发现IsDefault https://github.com/xamarin/Xamarin.Forms/blob/master/Xamarin.Forms.Core/Font.cs#L16其定义如下:

public bool IsDefault
{
    get { return FontFamily == null && FontSize == 0 && NamedSize == NamedSize.Default && FontAttributes == FontAttributes.None; }
}

So if FontFamily is null,那么它就是默认的在xamarin中形成生态系统。


When Label确实在特定平台上渲染,除非它FontFamily属性是专门修改自'null'对于某个值,本机控件上的字体属性也永远不会被修改。因此,本机控件使用该平台的默认字体系列进行呈现。

为了获得默认字体,您必须实现本机服务,并使用依赖注入 https://visualstudiomagazine.com/articles/2015/09/01/native-services-with-xamarinforms.aspx以获得该值。

有关用于本机控件的更多详细信息Label- 你可以参考这个link https://developer.xamarin.com/guides/xamarin-forms/application-fundamentals/custom-renderer/renderers/#Views.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

默认字体系列是什么? 的相关文章

  • 更改 Windows Phone 8.1 的 Xamarin Forms 中 Picker 控件的默认文本颜色

    我正在使用 Xamarin Forms 选择器控件并需要设置文本颜色 但是没有这样的属性 我尝试制作一个自定义渲染器 它在 android 和 ios 中对我有用 我最终重新绘制了控件 在wp8 1平台中没有Draw事件并且渲染器中的控件本
  • 忽略 Xamarin.Forms (PCL) 中的 SSL 证书错误

    有没有办法做类似这里描述的事情 https stackoverflow com a 2675183 https stackoverflow com a 2675183但在 Xamarin Forms PCL 应用程序中 我正在使用 Http
  • SupportMapFragment 地图为空

    我使用以下代码在 Xamarin Android 中显示地图 private SupportMapFragment mapFragment private GoogleMap map protected override void OnCr
  • 在 Monogame 和 UIKit 之间切换

    我一直在搜索和搜索 但似乎找不到适合我想做的事情的解决方案 而且我几乎已经到了不得不问它是否可能的地步 我正在使用 Xamarin Studio 开发 iOS 应用程序 我有几个不同的屏幕设置为 UIViewController 它们运行良
  • xamarin 谷歌地图不工作

    我使用以下链接创建了地图http developer xamarin com guides android platform features maps and location maps part 2 maps api http deve
  • Xamarin 中 QR 扫描后的处理对话框

    我在Xamarin应用程序中使用QR码扫描仪 当它扫描QR码时 它会执行一些操作 大约需要一分钟 而在执行操作时 我想在屏幕上显示一个加载对话框 但是 它没有显示在屏幕上 并且在应用程序的其他地方 它运行得很好 Code var expec
  • 如何从命令行运行 Xamarin.UITest?

    我想在我的构建服务器上运行测试 使用 Xamarin UITest 进行 该服务器在 OS X 上运行 TeamCity 我已经在线搜索了如何执行此操作 但我只能找到如何将这些测试提交到 Xamarin Test Cloud 这不是我想要的
  • Xamarin 没有安装的配置文件与安装的 iOS 签名身份匹配

    我想知道是否可以在 ios 设备上编译 Xamarin 应用程序 使用 Visual Studio for mac 而无需成为开发人员 费用为 99 美元 年 因为当我尝试在 iPhone 上构建项目时出现此错误 Xamarin iOS C
  • xamarin intellisense 无法在 Windows 10 上的 Visual Studio 2015 中工作

    我一直在尝试在 Windows 10 平台上将 Xamarin 与 Visual Studio 2015 一起使用 我无法对 XML 使用 Intellisense 这非常令人沮丧 有什么解决办法吗 您需要将 android 布局文件的 x
  • Xamarin 测试记录器选项有错误。无法记录自动化测试

    选项 gt Xamarin gt Xamarin Test Recorder 中的所有设置都有错误 我的桌面上安装了 Visual Studio 2015 企业版 以及 Xamarin 和 Xamarin Test Recorder 插件
  • 目标“MonoAndroid,版本= v6.0”项目依赖项

    我的 Visual studio 2017 nuget 包无法安装 Xamarin Forms 可移植类库项目中出现以下错误 严重性代码 说明 项目文件行抑制状态 错误无法安装包 Xamarin Android Support Compat
  • Xamarin Dim 页面(主详细信息页面)

    因此 对于 Android 当显示主从页面的母版页时 母版页会被 黑色暗淡 视图覆盖 因此很容易用眼睛区分这两个页面 在 iOS 中 详细信息页面不会变暗 因此更难区分视图 有没有办法用 黑色半透明 的 BoxView 或 Frame 覆盖
  • 如何调试仅在发布模式下崩溃的 Android 应用程序

    在调试模式下一切正常 但在发布模式下崩溃 调试模式下有哪些所需权限在发布模式下未打开 EDIT 当我将 链接 设置为 无 时 我会通过第一个屏幕进入 登录 屏幕 但是 当我添加发布权限时Internet 第一次尝试读取远程实体框架核心表时它
  • 构建成功时,Intellisense 不断显示错误 Visual Studio 2015

    因此 我正在开发一个 Xamarin 项目 突然 Visual studio 2015 开始崩溃 它几乎在所有内容下都显示错误红线 例如 InitializeComponent 在每个页面中都有红线 项目构建和运行没有错误 错误仅来自 In
  • NSTable行点击事件

    我正在开发 Xamarin Mac 应用程序 目前正在创建新闻源列表 我想要的是 当用户单击其中一行时 我会执行一些操作 打开浏览器并显示完整的故事 这是我的自定义单元格 行 的样子 public class CustomLatestNew
  • Xamarin.Forms:Oxyplot 占据整个页面

    我已在 Xamarin Forms 中使用 oxyplot 成功生成了一个绘图 但我无法阻止 oxyplot 占据整个页面 我在轮播中的其他页面上使用 stacklayout 并在每个页面上有一个横幅作为嵌入的 stacklayout 并希
  • Xamarin.iOS 项目:CS1703:已导入多个具有相同标识的程序集

    我有一个使用 NET Standard 2 0 的跨平台 iOS 和 Android Xamarin 解决方案 该解决方案是由 Visual Studio 2017 构建的 我已经尝试了当前版本和预览版本 Forms 和 Android 项
  • 使用 Xamarin.Forms 和 Zxing 生成 QR 码

    我在网上看到了很多关于这个的内容 旧帖子 但似乎没有什么对我有用 我正在尝试从字符串中生成二维码并将其显示在应用程序中 这就是我一开始的情况 qrCode new ZXingBarcodeImageView BarcodeFormat Ba
  • Android - 正确使用 invalidateOptionsMenu()

    我一直在寻找很多invalidateOptionsMenu 我知道它的作用 但我想不出这种方法在现实生活中有用的任何例子 我的意思是 例如 假设我们要添加一个新的MenuItem to our ActionBar 我们可以简单地获取菜单on
  • 如何在Xamarin Forms中实现Google Auth登录?

    我是 Xamarin 新手 我希望使用 Xamarin Forms 在我的新应用程序中进行 Google 登录 正确的方法是什么 有更新的教程或视频来指导吗 从哪儿开始 thanks 除了link https developer xamar

随机推荐