我在计算某些项目的位置时遇到问题,以及它们是否在 MAUI 的屏幕上可见,使用类似的函数
public Point GetScreenCoords(VisualElement view)
{
var result = new Point(view.X, view.Y);
while (view.Parent is VisualElement parent)
{
result = result.Offset(parent.X, parent.Y);
view = parent;
}
return result;
}
更多详细信息请参见:MAUI 查明屏幕上的某些内容是否未按预期工作
现在我想我找到了问题的原因。我认为这是屏幕顶部包含电池指示器的小条以及屏幕底部包含三角形、圆形和方形控件的较大条所需的空间。我假设该空间包含在 DeviceDisplay.MainDisplayInfo.Height 中,但它实际上不适用于我的应用程序。
我想如果我能在计算中尊重他们的身高,那就是正确的。所以我的问题是:
如何找出MAUI下这两个条的高度?或者他们有 Android 标准高度吗?在 MAUI 设备无关单元中这会是什么?还是以屏幕像素为单位?
或者,我怎样才能获得我的应用程序真正拥有的屏幕高度? (它不是 DeviceDisplay.MainDisplayInfo.Height。)
我知道一个类似的问题(MAUI:如何在Android上获取系统导航栏高度?),但该问题仅询问底部栏,并且没有得到可接受的答案。
如何找出MAUI下这两个条的高度?
您可以尝试使用以下代码来做到这一点:
var statusid = Platform.CurrentActivity.ApplicationContext.Resources.GetIdentifier("status_bar_height", "dimen", "android");
var statusbarheight = Platform.CurrentActivity.ApplicationContext.Resources.GetDimensionPixelSize(statusid);
// this is the status bar height
var navid = Platform.CurrentActivity.ApplicationContext.Resources.GetIdentifier("navigation_bar_height", "dimen", "android");
var navbarheight = Platform.CurrentActivity.ApplicationContext.Resources.GetDimensionPixelSize(navid);
// this is the navigation bar height
如何获得我的应用程序真正拥有的屏幕高度? (它 不是 DeviceDisplay.MainDisplayInfo.Height。)
您可以使用以下代码来获取应用程序的真实屏幕高度:
var displaymanager = Android.App.Application.Context.GetSystemService(Android.Content.Context.DisplayService) as Android.Hardware.Display.DisplayManager;
var defaultdisplay = displaymanager.GetDisplay(Android.Views.Display.DefaultDisplay);
var gotheight = Android.App.Application.Context.CreateDisplayContext(defaultdisplay).Resources.DisplayMetrics.HeightPixels;
//this is the real height
DeviceDisplay.MainDisplayInfo.Height
是全屏高度(包含两个条)。