2017-08-12 11 views
0

私のアプリのすべてのページに、透明なツールバーが上部に、背景画像がページ全体を覆うようにします。私は次のように書かれているApp.xaml.csでXamarin.Forms - ツールバーから背景画像を表示する

MainPage = new NavigationPage(new MDMaster()) 
{ 
    BarBackgroundColor = Color.Transparent, 
    BackgroundImage = "background_1.png" 
}; 

これは正しくツールバーが透明になりますが、しかし、背景画像は表示されません。背景色は追加できますが、背景画像は追加できません。

MDMasterは、MasterDetailPageのマスターコンポーネントです。 MDMasterのページでは、詳細ページを次のように設定しました。

Detail = new NavigationPage(new ProfilePage()) 
{ 
    BarBackgroundColor = Color.Transparent, 
    BackgroundImage = "background_1.png" 
}; 

これには背景イメージも表示されません。 ProfilePageで

、私は書くことができます:

public ProfilePage() 
{ 
    InitializeComponent();   
    this.BackgroundImage = "background_1.png"; 
} 

これは、しかし、それはそれは透明だにもかかわらず、ツールバーの背後にある領域をカバーしませんが、背景画像が表示されます。それはこのように見て終わる:

Background not showing behind toolbar

+0

1.ナビゲーションpage.2にMDのページを追加することは推奨されません。 "MDMasterはMasterDetailPageのマスターコンポーネントです"。マスターページではなく、MDページである必要があります。 –

+0

詳細ページだけがマスターページではなく、ナビゲーションページである必要がありますか? – Fayze

+0

あなたは正しい –

答えて

2

はまず、@Yuri Sが示唆したように、あなたはMasterDetailPageNavigationPageとをラップする必要はありません。 がOKであるため、MasterDetailPageを設定してください。

背景画像をルートMasterDetailPageに設定している場合、背景画像が表示されない理由は、トップのNavigationPageが透明でなく、背景画像を隠しているためです。

だから、問題を解決するために、あなたもNavigationPage to transparentBackgroundColorを設定する必要があります。

public App() 
{ 
    InitializeComponent(); 

    MainPage = new MasterDetailPage() 
    { 
     Master=new MainPage(), 
     Detail=new NavigationPage(new Detail()) 
     { 
      BarBackgroundColor=Color.Transparent, 
      BackgroundColor=Color.Transparent 
     }, 
     BackgroundImage="tianyuan.jpg" 
    }; 
} 

そして、それはこのように表示されます:あなたはしたくない場合

enter image description here

上記のようにステータスバーを表示するには、Droidプロジェクトで手動で設定することができます:

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()); 

     //set the status bar color 
     Window.SetStatusBarColor(Android.Graphics.Color.Black); 
    } 
} 

そして、それはこのように表示されます:

enter image description here

+0

ああ、それは正しく背景を示しています。私は質問がありますが、私はいくつかのNavigation.PushAsync(新しいページ())をMasterPageに持っています。マスターページがナビゲーションページではなくなったため、これらはもう機能しません。私はそれを働かせるために何をすべきですか? MainPage(MasterDetailPage)以外のすべてのページに戻るボタンがあります。 – Fayze

+0

'MasterPage'はナビゲーションに使用されるページです。なぜそれを変更したいのですか?私はあなたのプロジェクトのデザインを再考すべきだと思います。また、他の要件がある場合は、新しい質問を開いてみんながGoogleを使って見つけることができるようにしてください。 –

+0

私はそれを変更したくないですが、それがナビゲーションページでない場合、どのようにマスターページからナビゲートしますか? – Fayze

関連する問題