如何以Xamarin形式自定义主详细信息页面标题

时间:2019-02-04 11:46:48

标签: xamarin xamarin.forms xamarin.ios xamarin.android

我正在显示主要详细信息页面。

主页面具有菜单项列表,而详细信息页面将具有所选项的详细信息。

默认情况下,详细信息页面在屏幕左侧显示标题。 我要自定义详细信息页面标题以显示在页面中心

是否可以在Xamarin表单中自定义详细信息页面标题栏?

此处附有屏幕截图Master page

enter image description here

1 个答案:

答案 0 :(得分:1)

选项1

我认为您正在寻找TitleView(available since XF 3.2)。您所要做的就是创建一个想要拥有的View作为TitleView并将其分配给NavigationPage,如下所示:

代码

public class TitleViewPage : ContentPage
{
    public TitleViewPage()
    {
        var titleView = new Slider { HeightRequest = 44, WidthRequest = 300 };
        NavigationPage.SetTitleView(this, titleView);
        ...
    }
}

XAML

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
         xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
         x:Class="NavigationPageTitleView.TitleViewPage">
    <NavigationPage.TitleView>
        <Slider HeightRequest="44" WidthRequest="300" />
    </NavigationPage.TitleView>
    ...
</ContentPage>

参考:https://docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/navigation/hierarchical#displaying-views-in-the-navigation-bar

选项2

回到过去,在TitleView可用之前,我曾经只是删除导航栏:

代码

NavigationPage.SetHasNavigationBar(this, false);

XAML

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             ...
             NavigationPage.HasNavigationBar="False">

然后,我只是在我的NavigationPage顶部放了一个StackLayout(我的自定义标题栏),上面有我想要的所有图标/按钮/图像/格式化的文本/等。