如何在MasterDetailPage - Xamarin.Forms中自定义箭头图标,页面图标和页面标题

Lad*_*gai 10 android master-detail xamarin xamarin.forms

我在Visual Studio 2015中创建了一个新的Blank App(Xamarin.Forms Portable)项目,并修改了App.cs以获得"汉堡包菜单":

public class App : Application
{
    public App()
    {
        var masterPage = new ContentPage()
        {
            Content = new Label { Text = "Hello from Master!"},
            Title = "Master Page"
        };

        var detailPage = new ContentPage()
        {
            Content = new Label { Text = "Hello from Detail!" },
            Title = "Detail Page"
        };

        var mainPage = new MasterDetailPage()
        {
            Master = masterPage,
            Detail = detailPage,
            Title = "Main Page"
        };

        // The root page of your application
        MainPage = mainPage;
    }
    . . .
}
Run Code Online (Sandbox Code Playgroud)

一切正常,但我如何定制这四件事:

1)隐藏/更改箭头

2)隐藏/更改图标

3)隐藏/更改标题文本

4)隐藏整个工具栏

MasterDetailPage

Dan*_*rda 12

  1. 如果您使用DetailPage内部,您可以将箭头更改为汉堡图标NavigationPage:

    Detail = new NavigationPage(detailPage);
    
    Run Code Online (Sandbox Code Playgroud)
  2. 要更改图标,只需更改项目文件:

    • YourProject /资源/绘制/的icon.png
    • YourProject /资源/提拉 - 华电国际/的icon.png
    • YourProject /资源/绘制-xhdpi /的icon.png
    • YourProject /资源/绘制-xxhdpi /的icon.png

    或者在您MasterDetailPage设置的Icon属性上另一个资源.

    如果你想隐藏图标 - 它只适用于Android.它可以通过自定义渲染器解决(http://developer.xamarin.com/guides/cross-platform/xamarin-forms/custom-renderer/):

    public class CustomNavigationRenderer : NavigationRenderer
    {
        protected override void OnElementChanged(ElementChangedEventArgs<NavigationPage> e)
        {
            base.OnElementChanged (e);
    
            var actionBar = ((Activity)Context).ActionBar;
            actionBar.SetIcon (Resource.Color.transparent);
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)

    编辑: 它也可以在MainActivity.cs中完成:

    ActionBar.SetIcon (new ColorDrawable(Resources.GetColor (Android.Resource.Color.Transparent)));
    
    Run Code Online (Sandbox Code Playgroud)
  3. 只需使用Title财产Page.

  4. SetHasNavigationBar(page, false);