答案 0 :(得分:5)
在我们跳到答案之前,让我们回顾MasterDetailPage
课程,以及如何在您的示例中配置MasterDetailPage
。
Xamarin.Forms中的MasterDetailPage
类需要两个Page
属性:
MasterDetailPage.Detail
属性需要设置为包含NavigationPage
实例的ContentPage
。
MasterDetailPage.Master
属性需要设置为ContentPage
个实例
示例中的Detail
页面位于屏幕右侧。 Detail
页面是ContentPage
内的NavigationPage
,NavigationPage.BarBackgroundColor
设置为Color.Black
。此ContentPage
内的NavigationPage
ContentPage.BackgroundColor
设置为Color.Grey
。
示例中的Master
页面位于屏幕左侧。这是ContentPage
,其中包含ListView
。在不知道您的代码的情况下,我的猜测是ContentPage.BackgroundColor
设置为Color.White
而ListView.BackgroundColor
未设置。
选择导航抽屉图标时,将覆盖导航栏。这是因为导航栏位于Detail
页面上,而不在Master
页面上。
Master
页面上? Master
页面只能是ContentPage
且不能在NavigationPage
内,因此它没有导航栏(只有NavigationPage
可以有一个导航栏。)
首先,验证您使用的是最新版本的Xamarin.Forms,v2.3.2.127。
<强>的iOS 强>
在iOS上,您可以通过设置Detail
页面的Padding
属性来模仿Master
页面的导航栏颜色。将Master
页面BackgroundColor
属性设置为Color.Black
,如下所示:
Master = new ContentPage
{
BackgroundColor = Color.Black,
Padding = new Thickness(0, Device.OnPlatform(64, 0, 0), 0, 0)
};
<强>的Android 强>
在Android上,预期的行为是让Master
页面从左侧滑入并覆盖Detail
页面。要更新Android UI,我建议您更新以下三个项目之一:Master.BackgroundColor
属性,ListView.BackgroundColor
属性或Master
页面上ListView中使用的图标颜色。
如果您不希望导航栏向右移动,则可以在Android FormsApplicationActivity
类中扩展MainActivity
,这将阻止导航栏移动:
public class MainActivity : Xamarin.Forms.Platform.Android.FormsApplicationActivity
此示例显示当您使用FormsApplicationActivity
时,NavigationBar不会在Android应用上滑过:
https://developer.xamarin.com/samples/xamarin-forms/Navigation/MasterDetailPage/
答案 1 :(得分:0)
您可以使用片段活动轻松应用于抽象布局中的母版页面应用于母版页和抽象布局中应用于布局中您将自定义龙和公共类的动作事件