我试图创建一个masterdetailpage,我不太确定,如果我做得对,但抽屉/主人只是看起来很丑。例如,导航栏颜色不显示…:
关于如何改进它有什么想法/建议吗?
最佳答案
主详细信息页信息
在我们开始回答之前,让我们回顾一下MasterDetailPage
类以及如何在您的示例中配置MasterDetailPage
。
Xamarin.forms中的MasterDetailPage
类需要两个Page
属性:MasterDetailPage.Detail
属性需要设置为包含NavigationPage
实例的ContentPage
。MasterDetailPage.Master
属性需要设置为ContentPage
实例
示例中的Detail
页位于屏幕的右侧。Detail
页面是aContentPage
内部的一个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
页可以有导航栏)。
如何改进用户界面?
首先,确认您使用的是最新版本的xamarin.forms,v2.3.2.127。
网间网操作系统
在ios上,您可以通过设置NavigationPage
页的Detail
属性并将Padding
页的Master
属性设置为Master
来模拟BackgroundColor
页的导航栏颜色,如下所示:
Master = new ContentPage
{
BackgroundColor = Color.Black,
Padding = new Thickness(0, Device.OnPlatform(64, 0, 0), 0, 0)
};
安卓
在android上,预期的行为是让
Color.Black
页面从左侧滑入并覆盖Master
页面。要更新android ui,我建议更新以下三项之一:Detail
属性、Master.BackgroundColor
属性或ListView.BackgroundColor
页面列表视图中使用的图标颜色。如果不希望导航栏向右移动,可以在android
Master
类中扩展FormsApplicationActivity
,这将阻止导航栏移动:MainActivity
此示例显示,当您使用
public class MainActivity : Xamarin.Forms.Platform.Android.FormsApplicationActivity
时,导航栏不会在Android应用程序上滑动:https://developer.xamarin.com/samples/xamarin-forms/Navigation/MasterDetailPage/