2017-01-25 40 views
0

iOSとAndroid用のXamarin.Formsにアプリを構築しています。私たちのデザインでは、トップナビゲーション、システムバー、Androidシステムのナビゲーションが必要ですスクリーンの下部にあるバーを透明にします。以下は、あなたにアイデアを与えるための1つの画面のモックアップです。 私たちは背景画像を画面全体に表示させたいと考えています。Xamarin.Forms - iOSとAndroidでナビゲーション/システムバーを透明にする方法

Home screen mockup

私は私が間違っているなら、私を修正し、UIの実装のこの種はかなりプラットフォームに固有であるようだ、と私は方法を見つけるのに苦労してるかなり新しい開発者です私は私のクロスプラットフォームのプロジェクトでそれを作成するために行く必要があります。

私は最後の数日間、それを理解するために多くの研究を行ってきましたが、Xamarinの経験が限られている開発者として、これについてどうやってどうやって解決するのか、 。 どのようにこれらの要件を満たすXamarin.FormsでUIを作成しますか?

私は使用しているページのカスタムレンダラーを作成する必要がありますか?このUIは、Xamarin.Formsでは実用的ではありません。

ここで提供できる洞察は非常に高く評価されます。あなたの時間を事前に感謝します。

+1

これは、NavigationPageがないページ(これは上部のナビゲーションバーを削除します)とそれに続くナビゲーション(ニュースをクリックすると言いましょう)がモーダルを使用することができます。それは 'Navigation.PushAsync()'の代わりに 'Navigation.PushModalAsync()'を使用しています。それはあなたのために働くことができます。 – apineda

+0

@apinedaそのトリックをありがとう、それは間違いなく正しい方向への一歩ですが、私はナビゲーション機能を維持する必要があります。私はモーダルな状況でそれを再構築するつもりはありません。 – Jonathan

+0

@apinedaまた、私の質問の残りの半分であるAndroidナビゲーション/システムバーを透明にすることはありません。 – Jonathan

答えて

3

感謝します。それは正しい軌道に乗せてくれました。追加の研究をすると、問題を解決した解決策を見つけることができました。

メインナビゲーションページにナビゲーションバーを取り除くために:HomeScreen.xaml.cs

私はクラスのコンストラクタに次の行を追加:

NavigationPage.SetHasNavigationBar(this, false); 

をナビゲーションバーを透明にするには:

このコードを使用してメインページを作成します。App.xaml.cs

MainPage = new NavigationPage(new HomeScreen()) 
{ 
    BarBackgroundColor = Color.Transparent 
}; 

のAndroidのステータスバーを透明にするには、次の中MainActivity.csOnCreate

。ドロイドプロジェクトは、私はそれが動作するように取得する方法を見つけ出すときに私はiOSのコードを追加します右LoadApplication(new App());

Window.AddFlags(WindowManagerFlags.TranslucentNavigation); 
Window.SetBackgroundDrawableResource(Resource.Drawable.MyBackgroundPNG); 
SetStatusBarColor(Android.Graphics.Color.Transparent); 

前に、これらの行を追加しました。 :)

+0

こんにちは@ジョナサン。 iOS向けのソリューションを見つけましたか?ありがとう。 –

+0

こんにちは@JPAらうジョ。残念ながら私は良い解決策を見いだしたことはありません。私は、iOSのナビゲーションバーは透明ではないと言うことから、あなたはいくつかの非常に奇妙な視覚的な人工物を取得し始めます。メイン画面は簡単ですが、その要件を他のページに放棄しました。 – Jonathan

1

@apinedaはコメントの中で述べたのと似ていますが、NavigationPageのページを使用する必要はありません。代わりに、その特定のページでナビゲーションバーを非表示にすることができます。

NavigationPage.SetHasNavigationBar(this, false); 

ステータスバーを非表示にする必要がある場合は、プラットフォーム固有のコードで行う必要があります。 アンドロイド:彼の答えのための@SuavePirateへ

var activity = (Activity)Forms.Context; 
activity.Window.AddFlags(Android.Views.WindowManagerFlags.Fullscreen); 

のiOS

UIApplication.SharedApplication.StatusBarHidden = true; 
+0

優秀な入力は、これは間違いなく正しいトラックに私を入れています。ありがとう! – Jonathan

関連する問題