我正在为 Android 和 iOS 创建一个 Xamarin.Form 应用程序,一些用户用自己的字体替换系统默认字体,并且 Xaml 中的 FontSize 属性不适用于这些字体,并且这些字体在我的应用程序中不那么可读。1. 那么,即使用户在系统配置页面中更改了字体,我是否可以强制应用程序中使用的字体为系统默认字体?2. 如果我不能执行上述操作,我可以将我的应用程序中具有文本属性的所有控件的 FontFamily 设置为我在全局 Android 和 iOS 资产文件夹中包含的字体吗?我搜索了一些全局字体解决方案,但没有找到 Xamarin.Form 解决方案,并且某些解决方案似乎已经过时。
现在,我为控件一一设置 FontFamily,如下所示:
<Button FontFamily="{OnPlatform Android=xiaozuan.ttf#xiaozuan}"/>
Run Code Online (Sandbox Code Playgroud)
有太多的控件,我无法真正做到这一点...任何线索或帮助将不胜感激!
我很困惑的是,在不同的文档中,导航栏指的是不同的控件,但在这里,它是Android功能,除了硬件按钮之外还提供导航控件。我希望得到这个条宽码的高度。
在挖掘了有关永久隐藏栏的解决方案后,我意识到这是不可能的(这是解决问题的最理想的方法),如果栏可以永久隐藏,请纠正我!我在此处附加了我用来隐藏该栏的代码,但每当我点击屏幕时,该栏就会重新出现。
相反,我可以获取Android上底部软件导航栏的高度,以便我可以相应地调整页面元素的位置吗?(更令人烦恼的是,某些 Android 设备允许用户通过单击栏上的箭头按钮来手动显示和隐藏栏。)
//In OnCreate of MainActivity.cs,
int uiOptions = (int)Window.DecorView.SystemUiVisibility;
uiOptions |= (int)SystemUiFlags.HideNavigation;
Window.DecorView.SystemUiVisibility = (StatusBarVisibility)uiOptions;
//In some topics, people said to add some more SystemUiFlags, such as IMMERSIVE_STICKY, LAYOUT_FULLSCREEN, but with those, the bar cannot be hidden.
Run Code Online (Sandbox Code Playgroud)
奇怪的是,DeviceDisplay.MainDisplayInfo.Height 包括导航栏的高度,否则我不需要执行上述操作。有没有一种方法可以在没有软件导航栏的情况下检测屏幕高度?
非常感谢您对此的任何帮助。
PS:我可以至少检测软件导航栏是否打开/显示,而不是获取高度吗?! 现在我知道我可以使用 ViewConfiguration.Get(Android.App.Application.Context).HasPermanentMenuKey 检测设备是否有硬导航键,这很有用,但我仍然无法检测软导航栏是否打开。