我正在使用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);
,则导航栏和标题栏(带有汉堡菜单)都消失了!有没有一种方法可以仅使用返回按钮隐藏导航栏,而保留主/详细标题栏(带有汉堡菜单)?
答案 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());