web-dev-qa-db-ja.com

MasterDetailPageで矢印アイコン、ページアイコン、ページタイトルをカスタマイズする方法-Xamarin.Forms

Visual Studio 2015で新しい空白のアプリ(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;
    }
    . . .
}

すべて正常に動作しますが、次の4つをカスタマイズするにはどうすればよいですか。

1)矢印を非表示/変更する

2)アイコンの非表示/変更

3)タイトルテキストを非表示/変更する

4)ツールバー全体を非表示にする

MasterDetailPage

10
Ladislav Margai
  1. DetailPage内でNavigationPageを使用する場合は、矢印をハンバーガーアイコンに変更できます。

    _Detail = new NavigationPage(detailPage);
    _
  2. アイコンを変更するには、プロジェクトファイルを変更するだけです。

    • YourProject/Resources/drawable/icon.png
    • YourProject/Resources/drawable-hdpi/icon.png
    • YourProject/Resources/drawable-xhdpi/icon.png
    • YourProject/Resources/drawable-xxhdpi/icon.png

    または、MasterDetailPageIconプロパティを別のリソースに設定します。

    アイコンを非表示にする場合は、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);
        }
    }
    _

    EDIT:MainActivity.csでも実行できます:

    _ActionBar.SetIcon (new ColorDrawable(Resources.GetColor (Android.Resource.Color.Transparent)));
    _
  3. TitlePageプロパティを使用するだけです。

  4. SetHasNavigationBar(page, false);

12
Daniel Luberda