如何在 Xamarin.Forms 页面中获取标签栏高度

Ash*_*Ash 4 xamarin.ios xamarin xamarin.forms

我在我的内容页面中显示图像,使其高度是页面高度的固定百分比。我使用具有星形单元行高的网格来执行此操作。但是,当内容页面放置在 TabbedPage 中时,总网格高度似乎是 [屏幕减去标签栏高度] 的高度,因此,图像显得有点短。

如果我可以在我的内容页面中访问标签栏高度,这将是对百分比的简单调整。

题:

1) 如何获取内容页面中的标签栏高度?

2)有没有更好的方法来达到预期的结果?

Col*_*SFT 5

1) 如何获取内容页面中的标签栏高度?

我们无法直接从 PCL 获取标签栏高度。只需要一个自定义渲染器即可 TabbedRenderer

[assembly: ExportRenderer(typeof(TabbedPage), 
typeof(CustomTabbedPageRenderer))]
namespace TabbedPageWithNavigationPage.iOS
{
    class CustomTabbedPageRenderer : TabbedRenderer
    {
        public override void ViewWillAppear(bool animated)
        {
            base.ViewWillAppear(animated);
            App.TabHeight = (int)TabBar.Frame.Height;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

定义TabHeightApp的PCL

public static int TabHeight { get; set; }
Run Code Online (Sandbox Code Playgroud)

获取高度 TabbedPage

protected override void OnAppearing()
{
    base.OnAppearing();
    int height = App.TabHeight;
}
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

2)有没有更好的方法来达到预期的结果?

最好不要在Image上设置固定框,也不要手动操作框。

AspectofImage可以帮助我们根据需要显示图像。


适合度

在此处输入图片说明


纵横比

在此处输入图片说明


在此处输入图片说明