2016-07-18 2 views
4

私はXamarin.formsを使ってアプリを作っています。Xamarin.Androidのボトムタブ(Xamarin.formsアプリ内)

あなたはすべてXamarin.formsのAndroid用の標準タブを知っています。 'TabbedPageが一番上にあります。 Android UXを尊重するネイティブAndroidアプリの場合は、そこにあるはずですから。

しかし、今は変更されています。 でもGoogleは「ボトムナビゲーション」という新しいボトムタブバーを発表しました。 https://github.com/roughike/BottomBar 多くの主要アプリは下部タブバーを使用しています。

新しいボトムナビゲーションは使用できません。 私のアプリはXamarin.formsをベースにしており、フォームのTabbedPageを使用しているためです。 ボトムナビゲーションを使用しようとすると、もっと複雑になります。

ので、最善のアプローチは、下にネイティブのタブを移動することになる

を(私もフォームからiOSアプリを作ってるんです)。

私はこれを見つけました。 (多分古い) http://envyandroid.com/align-tabhost-at-bottom/

しかし、Xamarin.Androidでの使い方はわかりません。 私を助けることができますか?

答えて

9

同じ問題を実行し、GitHubにあるコードからカスタムTabbedPageRendererを作成しようとしましたが、いくつかのクラスとインターフェイスが内部としてスコープされているため運がうまくいきませんでした。解決策を見つけましたが、ハッキーなものですが、私たちの場合はうまくいくようです。

[assembly: ExportRenderer(typeof(BottomTabbedPage), typeof(BottomTabbedPageRenderer))] 
namespace My.XForms.Droid.Renderers 
{ 
    public class BottomTabbedPageRenderer : TabbedPageRenderer 
    { 
     protected override void OnLayout(bool changed, int l, int t, int r, int b) 
     { 
      InvertLayoutThroughScale(); 

      base.OnLayout(changed, l, t, r, b); 
     } 

     private void InvertLayoutThroughScale() 
     { 
      ViewGroup.ScaleY = -1; 

      TabLayout tabLayout = null; 
      ViewPager viewPager = null; 

      for (int i = 0; i < ChildCount; ++i) 
      { 
       Android.Views.View view = (Android.Views.View)GetChildAt(i); 
       if (view is TabLayout) tabLayout = (TabLayout)view; 
       else if (view is ViewPager) viewPager = (ViewPager)view; 
      } 

      tabLayout.ScaleY = viewPager.ScaleY = -1; 
      viewPager.SetPadding(0, -tabLayout.MeasuredHeight, 0, 0); 
     } 
    } 
} 

ちょうどページのレイアウトをスケーリングして、「doesnの再子供をスケーリング:あなたは次のように新しいレンダラーを作成して、アンドロイドのための新しいレンダラーをリンクすることができるように

は単にTabbedPageから継承する新しいBottomTabbedPageを作成しましたオリジナルのTabbedPageRendererがViewPagerをTabLayoutと重ならないようにパディングするので、含まれているページには開始ギャップが表示され、その結果、ネガティブなパディングフィックスが挿入されるため、このトリックを行います。

理想的なソリューションではありませんが、少なくとも機能しますが、少なくとも完全なTabbedPageの実装は実行しません。

+1

ありがとうございますコードのためのパブロ。本当に感謝しております。そして、質問を更新しないと申し訳ありません。これをチェックしていただけますか? https://forums.xamarin.com/discussion/comment/211381#Comment_211381 –

+0

誰かがbottomTabを使ってXFコードを作成しました。すべてがうまく見えます。あなたが新しいcontentPageをプッシュすると、Bottombarは消えてしまうという問題だけです。 –

+0

そしてあなたのコードも試してみます。ありがとう。私は本当に混乱しているし、アプリをより良いUXにする決定をすることはとても難しいです。 –

7

BottomNavigationBarXF XamarinフォームのNuGetパッケージを使用してください。
結果:
enter image description here

+3

タブバーを下に置くだけでは難しいとは思っていませんでした。 – Felix

+0

私はこの記事を読むことをお勧めします https://xamarindevelopervietnam.wordpress.com/2017/01/09/bottom-tabbedpage-in-xamarin-forms/ – Polyariz

関連する問題