2017-07-18 6 views
0

ナビゲーションバーの左側にToolbarItemを設定したいのですが、設定方法がわかりません。 Xamarin.FormsのデフォルトのToolbarItemは右に表示されますToolbarItemをXamarin.Formsの左側に設定するにはどうすればよいですか?

+0

特定のプラットフォームでは?あなたが言ったように、これのためにカスタムレンダーが必要になります。それはデフォルトでサポートされていません –

答えて

0

iOSではカスタムレンダラを使用していますが、周囲には何の道もないと思います。 Androidでは、アイテムが右側にあることに慣れているので気にしません。レンダラーは、2つ以上のToolBarItemがあるかどうかをチェックし、そうであれば左側に移動します。

[assembly: ExportRenderer(typeof(ContentPage), typeof(LeftNavigationItemRenderer))] 
namespace MyApp.iOS 
{ 
    public class LeftNavigationItemRenderer : PageRenderer 
    { 
     public override void ViewWillAppear(bool animated) 
     { 
      base.ViewWillAppear(animated); 

      if (NavigationController == null) 
       return; 

      var navigationItem = NavigationController.TopViewController.NavigationItem; 
      var leftNativeButtons = (navigationItem.LeftBarButtonItems ?? new UIBarButtonItem[] { }).ToList(); 
      var rightNativeButtons = (navigationItem.RightBarButtonItems ?? new UIBarButtonItem[] { }).ToList(); 

      if (rightNativeButtons.Count > 1) 
      { 
       var nativeItem = rightNativeButtons.Last(); 
       rightNativeButtons.Remove(nativeItem); 
       leftNativeButtons.Add(nativeItem); 
      } 

      navigationItem.RightBarButtonItems = rightNativeButtons.ToArray(); 
      navigationItem.LeftBarButtonItems = leftNativeButtons.ToArray(); 
     } 
    } 
} 
+0

ありがとうございますが、特定のプラットフォーム、iOS、またはAndroidではなく、Xamarin.Formsに実装したいと思います。 – Jackson

+0

申し訳ありませんが、これはXamarin Formsの仕組みではありません。プラットフォーム固有のコードに頼らずには不可能なことがありますが、これもその1つです。 Xamarin Formsの機能は限られていますが、拡張性については非常に強力です。つまり、ほとんどの場合、プラットフォーム固有のコードを書く必要があります。 –

+0

OK、ありがとうございます – Jackson

関連する問題