2016-04-11 17 views
2

私は2つのXamarinフォームプロジェクトで作業していましたが、どちらもiOSとAndroidの下にツールバーが必要です。私はXamarinフォームを使用してAndroid用の下部ツールバーをまとめようと苦労してきました。私はAndroid用のカスタムTabbedRendererを作成しようとしましたが、タブを下に押して変更する正しい方法を見つけることができないようです。私はまた、タブのすべてのページの下部にあるStackLayoutを使用しようとしましたが、結果はあまり良くありません。タブを切り替えると、ページの一部として読み込まれるたびにタブが点滅します。Xamarinフォームを使用してAndroid用の下部ツールバーを作成する方法

Xamarinフォームを使用してボトムツールバーを作成するためのより優れたソリューションがありますか、またはGoogleがマサチューセッツのマテリアルデザイン仕様への更新を正式に採用しているため、近い将来Xamarinフォームに付属する「ネイティブ」ボトムツールバーがあります?

ありがとうございます!

using System; 
using Xamarin.Forms.Platform.Android; 
using Android.App; 
using Xamarin.Forms; 

[assembly: ExportRenderer(typeof(TabbedPage), typeof(ylbCross.Droid.CustomTabRenderer))] 

namespace MyApp.Droid 
{ 
    public class CustomTabRenderer : TabbedRenderer 
    { 
     private Activity _activity; 

     protected override void OnElementChanged (ElementChangedEventArgs<TabbedPage> e) 
     { 

      base.OnElementChanged (e); 

      _activity = this.Context as Activity; 


     } 

     public override void OnWindowFocusChanged(bool hasWindowFocus) 
     { 
      ActionBar actionBar = _activity.ActionBar; 

      if (actionBar.TabCount > 0) 
      { 
       ActionBar.Tab tabOne = actionBar.GetTabAt(0); 
       tabOne.SetIcon (Resource.Drawable.home_Blue48); 

       tabOne.TabSelected += (sender, e) => { 
        tabOne.SetIcon (Resource.Drawable.home_Blue); 
       }; 
       tabOne.TabUnselected += (sender, e) => { 
        tabOne.SetIcon (Resource.Drawable.home_Grey); 
       }; 

       ActionBar.Tab tabTwo = actionBar.GetTabAt(1); 
       tabTwo.SetIcon (Resource.Drawable.QA_Grey); 
       tabTwo.TabSelected += (sender, e) => { 
        tabTwo.SetIcon (Resource.Drawable.QA_Blue); 
       }; 
       tabTwo.TabUnselected += (sender, e) => { 
        tabTwo.SetIcon (Resource.Drawable.QA_Grey); 
       }; 

       ActionBar.Tab tabThree = actionBar.GetTabAt(2); 
       tabThree.SetIcon(Resource.Drawable.consulting_Grey); 
       tabThree.TabSelected += (sender, e) => { 
        tabThree.SetIcon (Resource.Drawable.consulting_Blue); 
       }; 
       tabThree.TabUnselected += (sender, e) => { 
        tabThree.SetIcon (Resource.Drawable.consulting_Grey); 
       } 

       ActionBar.Tab tabFour = actionBar.GetTabAt(3); 
       tabFour.SetIcon(Resource.Drawable.aboutMe_Grey); 
       tabFour.TabSelected += (sender, e) => { 
        tabFour.SetIcon (Resource.Drawable.aboutMe_Blue); 
       }; 
       tabFour.TabUnselected += (sender, e) => { 
        tabFour.SetIcon (Resource.Drawable.aboutMe_Grey); 
       } 

      } 

      base.OnWindowFocusChanged(hasWindowFocus); 
     } 
    } 
} 
+1

これを解決できましたか? – CodeKiwi

答えて

0

私はこの質問が重複していると思います。 あなたがここに解決策を見つけることができます。要するに

Duplicated question answer (XF Bottom navigation bar)

は、あなたがサードパーティ製のコントロール使うべきか、あなたは良いデザイナーであれば、あなたは簡単に独自の下のバーを作成することができます。

この回答の提案されたコンポーネントは、Androidプラットフォームの材料デザインを使用します。 この回答が正しいと答えた場合は、忘れずにマークしてください。

関連する問題