2017-10-13 14 views
0

現在、Xamarinで設計されたアプリケーションがあります.NativeUI(共有コードとXamarin.Android、Xamarin.UWPなど)は、Xamain.Formsが移行するほど成熟しているかどうかを判断するプロセスにあります。ネイティブAndroidツールバーを使用したXamarinフォーム

私たちが心配しているのは、画面サイズに基づいてオーバーフローするアイテムを自動的に移動するAndroid inbuiltの処理を使用し、オーバーフローメニューとサブメニュー、アイコンの代わりにカスタムコントロール+テキスト。

カスタムコントロールとハードコードされたオーバーフローアイテムを取得できました。しかし、残りがネイティブになることなく可能であるかどうかはわかりません。ネイティブにする必要がある場合は、Xamarin.Formsを使用してXamarin.Android ActionBarを使用する方法がわかりません。

もう一つの楽しみ方は、サポートライブラリのアクションバーを使用するという意味で、Android 4.3をサポートする必要があるということです。

謝罪、質問はビットまとまりであるが、2具体的に分けることができる:項目は自動的にAndroidのと同様の方法で利用可能な画面サイズに基づいて、またはツールバーのオーバーフローから移動することができるXamarin.Formsで

1)ネイティブツールバー?

2)Xamarin.Formsを使用する場合、Xamarin.Androidで定義されたツールバーを使用できますか?どうやって?

答えて

1

これは、カスタムレンダラを使用するXamarinフォームで可能になるはずです。

あなたは、あなたが何をしたいのか、またそれをXamarin Nativeで行う方法を理解していることから一歩前進しています。

Here is an overview on custom renderers

Here is a link to非常に基本的なナビゲーションページのAndroid用カスタムレンダラー。必要なネイティブAndroidコードを含むように展開することができます。

Androidの以前のバージョンをサポートするためにapp compatを使用している場合は、おそらくNavigationPageRendererを上書きする必要があることに注意してください。

+0

おかげで、聞こえます。 – KrustyGString

1

@Steve Chadbourneの回答に加えて、クライアントのAndroidプロジェクトでMainActivity.csファイルを開くと、どのページコントロールがあなたのXFプロジェクトのPCLで使用しているのかを知ることは本当に重要です。 :あなたが見ることができるように

public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity 
{ 
    protected override void OnCreate(Bundle bundle) 
    { 
     TabLayoutResource = Resource.Layout.Tabbar; 
     ToolbarResource = Resource.Layout.Toolbar; 

     base.OnCreate(bundle); 

     global::Xamarin.Forms.Forms.Init(this, bundle); 
     LoadApplication(new App()); 
    } 
} 

、あなたはクライアントのAndroidプロジェクトにResources/layoutフォルダ内に見つけることができToolbarが定義されています

<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/toolbar" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="?attr/colorPrimary" 
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" 
    android:popupTheme="@style/ThemeOverlay.AppCompat.Light" /> 

このToolbarは、XFの一部のページタイプコントロール内でデフォルトで使用されます(例:NavigationPage)。

XFのネイティブコントロールの場合、私はそれがXamarin.Forms.ToolbarItemに気づかなかった可能性があると思います。 Toolbarのようにレンダリングされ、OrderプロパティをToolbarItemに設定して、プライマリ、セカンダリ、またはデフォルトのツールバーサーフェスに表示する項目を指定することもできます。

カスタムレンダラーの場合、このブログを参照することができます:Xamarin Forms - ContentPage with SearchBar in the Navigation bar

はあなたのための最良の選択であるか分からないのですが、私はあなたの二つの質問に説明したいです。 XFはUIツールキットのようなもので、ネイティブSDKに基づいて作成されたすべてのコントロールは、ネイティブプラットフォームで使用できるようにすべてのコントロールがネイティブコントロールとしてレンダリングされることを意味します。したがって、XFコントロールがAndroidプラットフォームでToolbarとしてレンダリングされた場合、その動作は、ネイティブAndroidでは通常Toolbarと同じでなければなりません。BUTレンダラーをカスタマイズすると、XFコントロールが作成されたときに、ここに結果が反映される可能性があります。このような問題が発生した場合は、Githubのオープンソースを読むことをお勧めします。あなたの最後の質問については

あなたはXamarin.Androidで定義されたツールバーを使用することができますXamarin.Formsを使用している場合は?どうやって?

カスタムレンダラーを使用することも、ネイティブクライアントAndroidプロジェクトのToolbar.axmlのコードを直接変更することもできます。我々がそれを必要とするものを行うことができるかもしれませんように

+0

非常に有用な情報、ありがとう。私は、XFのツールバーを試作しましたが、ネストされたリストとネイティブAndroidのツールバーは、それゆえ、なぜ私が不足している機能のためにネイティブに戻す方法について興味ができることを他のいくつかのことを行うことができません。 – KrustyGString

関連する問題