Xamarin.Forms の XAML で次のような ContentPage を記述したら・・・
<?xml version="1.0" encoding="utf-8" ?> <ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:view="clr-namespace:XamarinSample.Views;assembly=XamarinSample" xmlns:vm="clr-namespace:XamarinSample.ViewModels;assembly=XamarinSample" x:Class="XamarinSample.Views.TopPage"> <ContentView BackgroundColor="Black" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand"/> </ContentPage>
iOS だと画面がほんとに真っ黒! ステータスバーまで表示領域に含まれるらしい
Android や Windows Phone にはこういった仕様がないので単純に上部に余白を確保するわけにはいきません
しかし、こういった iOS 固有のレイアウト事情に対応するために便利な拡張マークアップが Xamarin.Forms には用意されていました
<?xml version="1.0" encoding="utf-8" ?> <ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:view="clr-namespace:XamarinSample.Views;assembly=XamarinSample" xmlns:vm="clr-namespace:XamarinSample.ViewModels;assembly=XamarinSample" x:Class="XamarinSample.Views.TopPage"> <ContentPage.Padding> <OnPlatform x:TypeArguments="Thickness" iOS="0, 20, 0, 0" Android="0, 0, 0, 0" WinPhone="0, 0, 0, 0" /> </ContentPage.Padding> <ContentView BackgroundColor="Black" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand"/> </ContentPage>
こんな感じで「OnPlatform」タグを追加し、設定値の型と各プラットフォームごとの値を指定すればプラットフォームごとに個別に設定値を変更できるというわけです
ステータスバーが見えるようになりました!