如何防止在MasterDetailPage上方出现其他导航栏(Android上为Xamarin)

时间:2019-06-25 12:35:20

标签: xamarin xamarin.forms xamarin.android

我正在使用Xamarin Forms(4.0)创建适用于Android(Android 8.1)的应用程序。 我的主页是MasterDetailPage,在其中将详细信息页面设置为:

this.Detail = new NavigationPage(new SomePage());

当我想将详细信息导航到另一页(以便“后退”按钮正常工作)时,我只是这样做:

this.Detail.Navigation.PushAsync(new NavigationPage(new SomeOtherPage());

这一切正常,但是我留下了带有后退按钮的附加导航栏:

如果我执行NavigationPage.SetHasBackButton(this, false);,则后退按钮会消失,但导航栏会保留,因此页面顶部会有一个大的蓝色矩形。如果我执行NavigationPage.SetHasNavigationBar(this, false);,则导航栏标题栏(带有汉堡菜单)都消失了!有没有一种方法可以仅使用返回按钮隐藏导航栏,而保留主/详细标题栏(带有汉堡菜单)?

4 个答案:

答案 0 :(得分:1)

Xamarin Forms似乎并不真正支持我尝试使其工作的方式。如果将“详细信息”导航到另一个页面,则可以有效地放宽对MasterDetailPage的“ Master”部分的访问(至少在某些设备上)。我试图通过将目标“详细信息”页面包装到另一个NavigationPage中来避免这种情况,但在模拟器中却可以,但这只是偶然。

答案 1 :(得分:0)

您只需要一个NavigationPage

实例
this.Detail.Navigation.PushAsync(new SomeOtherPage());

答案 2 :(得分:0)

您可以将新的MasterDetailPage分配给根,然后向后按下。由于这不起作用,因此您必须稍作修改。

答案 3 :(得分:0)

请确保您的MainPage仅设置为MasterDetailPage。 曾经,我有一个案例,有人做了这样的事情:

MainPage = new NavigationPage(new MasterDetailPage());

当然,它应该定义为:

MainPage = new MasterDetailPage();

然后,您的DetailPage应该只定义一次,如下所示:

Detail = new NavigationPage(new MyPage());