Xamarin视图在设置为半透明时被UINavigationBar重叠

问题描述 投票:1回答:1

我有一个Xamarin.Forms应用程序,想将NavigationBar设置为半透明。但是,当我这样做时,Xamarin视图的行为却很奇怪:

ListViews或TableViews行为正确。但是,当我将它们包装在RefreshView中时,它们会被UINavigationBar覆盖。

-- TRANSLUCENCY WITHOUT REFRESHVIEW: OKAY

<ContentPage>
    <ListView>
        ...
    </ListView>
</ContentPage>
-- TRANSLUCENCY WITHOUT REFRESHVIEW: BUGGY

<ContentPage>
    <RefreshView>     <----
        <ListView>
            ...
        </ListView>
    </RefreshView>
</ContentPage>

Xamarin.Forms views hide behind the UINavigationBar if set to be translucent.

我想念什么吗?

xamarin xamarin.forms uinavigationbar translucency
1个回答
0
投票

我们可以使用navigationPage.BarBackgroundColor = Color.Transparent实现。

NavigateFromMenu方法修改如下:

case (int)MenuItemType.TranslucentWithoutRefreshView:
    MenuPages.Add(id, CreateTranslucentNavigationPage(new TranslucentWithRefreshPage(),false));
    break;
case (int)MenuItemType.TranslucentWithRefreshView:
    MenuPages.Add(id, CreateTranslucentNavigationPage(new TranslucentWithRefreshPage(),true));
    break;

然后用CreateTranslucentNavigationPage方法:

private Xamarin.Forms.NavigationPage CreateTranslucentNavigationPage(Xamarin.Forms.Page page, bool value)
{
    var navigationPage = new Xamarin.Forms.NavigationPage(page);
    if (value)
    {
        navigationPage.BarBackgroundColor = Color.Transparent;
        navigationPage.BarTextColor = Color.Black;
    }
    //Xamarin.Forms.PlatformConfiguration.iOSSpecific.NavigationPage.SetIsNavigationBarTranslucent(navigationPage, true);
    return navigationPage;
}

效果:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.