xamarin MAUI:如何在Android上获取系统导航栏高度?

gwo2fgha  于 2023-04-03  发布在  Android
关注(0)|答案(1)|浏览(243)

在MAUI应用程序上,我们在屏幕底部显示一些信息:例如,我们在Shell的菜单底部显示的版本号。
在大多数设备上,屏幕显示效果很好,完全可见。然而,在某些设备上,包含“返回”,“主页”和“最近”按钮的“系统导航栏”显示在应用程序屏幕上方。这个栏也被称为“软键”或“系统栏”。
有办法得到这个系统导航栏的高度吗?

cxfofazt

cxfofazt1#

您可以在每个平台上使用自定义渲染器获得它。

适用于安卓系统

public class NaviRendererForAndroid : NavigationPageRenderer
{
    public CustomNaviForAndroid(Context context) : base(context)
    {

    }

    protected override void OnElementChanged(ElementChangedEventArgs<NavigationPage> e)
    {
        base.OnElementChanged(e);

        var height = 0;

        Resources resources = Context.Resources;
        int resourceId = resources.GetIdentifier("navigation_bar_height", "dimen", "android");
        if (resourceId > 0)
        {
            height = resources.GetDimensionPixelSize(resourceId);
        }
    }
}

iOS版

public class NaviRendererForiOS : NavigationRenderer
{
    protected override void OnElementChanged(VisualElementChangedEventArgs e)
    {
        base.OnElementChanged(e);

        var height = NavigationBar.Bounds.Height;
    }
}

关于如何在MAUI中使用自定义渲染器,您可以检查Using Custom Renderers in .NET MAUI

相关问题