2016年

5月

25日

Xamarin.Froms  OnPlatform (iOS, Android, Windows Phone)

Xamarin.Forms にはプラットフォームやデバイスの種類に準じた処理ができるような Device クラスというのがあります。ラベルを例としてプラットフォームの判別をまとめています。

Android Windows Phone エミレーター表示

BackgroundColor, label.Text を変えています。

ファイル --> 新規作成  --> プロジェクト(P)...  --> Cross-Platform --> Xamarin-Forms で作成

OnPlatform02

MainHome.cs 追加

MainHome.cs の書き換え

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using Xamarin.Forms;

namespace OnPlatform02
{
    public partial class MainHome : ContentPage
    {
        public MainHome()
        {
            /*
            if (Device.OS == TargetPlatform.iOS)
            {
                // いつもの iOS の Status bar を避けるやつ。
                stackLayout.Padding = new Thickness(0, 20, 0, 0);
            }
            */

            //ラベルを生成
            var label = new Label
            {
                //FontSize = 40,
                //ビューの中央に配置
                HorizontalOptions = LayoutOptions.Center,
                VerticalOptions = LayoutOptions.Center,
                //Text = "Customizing Xamarin Forms"
            };
            Content = label;//ラベルのみを配置する

            /*
            // iOS,Android,WinPhone Platform
            if (Device.OS == TargetPlatform.iOS)
            {
                label.Text = "Hello from iOS!";
            }
            if (Device.OS == TargetPlatform.Android)
            {
                label.Text = "Hello from Android!";
            }
            if (Device.OS == TargetPlatform.WinPhone)
            {
                label.Text = "Hello from WinPhone!";
            }
            */

            /*
            // iOS,Android,WinPhone Platform
            Device.OnPlatform(
                iOS: () => { label.Text = "Hello from iOS!"; },
                Android: () => { label.Text = "Hello from Droid!"; },
                WinPhone: () => { label.Text = "Hello from WinPhone!"; });
            */
       
            // iOS,Android,WinPhone Platform
            Device.OnPlatform(
            iOS: () => {
                BackgroundImage = "back.png";
                label.Text = "iOS Xamarin Forms";
                label.FontFamily = "HelveticaNeue-Thin";
                label.FontSize = 30;
            },

            Android: () => {
                BackgroundColor = Color.FromHex("#AA66CC");
                label.Text = "Android Xamarin Forms";
                label.FontFamily = "sans-serif-condensed";
                //label.FontSize = Device.GetNamedSize(NamedSize.Medium, label);
                label.FontSize = 40;
            },

            WinPhone: () => {
                BackgroundColor = Color.Blue;
                label.Text = "WinPhone Xamarin Forms";
                label.FontFamily = "HelveticaNeue-Thin";
                label.FontSize = 30;
            });
            
        }
    }
}

App.cs の書き換え

App.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Xamarin.Forms;

namespace OnPlatform02
{
    public class App : Application
    {
        public App()
        {
            // The root page of your application
            MainPage = new MainHome();           
        }        
    }
}

 

目 次