Xamarin.AndroidでNumberPickerを使ってみた

概要

QiitaでAndroidのNumberPickerは、数字だけでなく文字も扱えるという記事を見つけました。
元記事はこちら→NumberPickerをカスタムして使う - Qiita

そのため、Xamarin.Androidでも同じことができないかやってみました。

Xamarin.AndroidでNumberPickerを使う

①NumberPickerをViewに配置する
axmlファイルにNumberPickerを配置する
f:id:b-kimagure:20181202175735j:plain

②NumberPickerの画面との紐づけとNumberPickerの最大値、最小値を設定する
MainActivityクラスにNumberPickerの画面との紐づけを行うコードおよび、NumberPickerの最大値、最小値を設定するコードを記述します。
(以下のコードの"// 画面のNumberPickerとの紐づけ"より下の部分です)

        private NumberPicker numberPicker;

        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            SetContentView(Resource.Layout.activity_main);

            Android.Support.V7.Widget.Toolbar toolbar = FindViewById<Android.Support.V7.Widget.Toolbar>(Resource.Id.toolbar);
            SetSupportActionBar(toolbar);

           // 画面のNumberPickerとの紐づけ
            numberPicker = FindViewById<NumberPicker>(Resource.Id.numberPicker1);

            numberPicker.MinValue = 0;    // 最小値の設定
            numberPicker.MaxValue = 10;   // 最大値の設定
        }

③ビルド結果
f:id:b-kimagure:20181202183315j:plain
0から10までの値が選択できるようになりました。

NumberPickerに文字列を表示する

NumberPicerの項目を文字列にするためには、"SetDisplayedValues"を使用します。
今回は、先ほどのソースコードの"numberPicker.MaxValue = 10; // 最大値の設定"下に以下のコードを挿入して実行します。

 // NumverPicerに文字列を表示させる
numberPicker.SetDisplayedValues(
    new string[] 
        { 
            "zero","one","two","three",
            "fore","five","six","seven",
            "eight","nine","ten"
        });

実行結果
f:id:b-kimagure:20181202183953j:plain
NumberPicerに表示される値が、文字列になっています。

注意事項

NumberPickerの要素数(最小値から最大値までの数)とstring[]の要素数が異なる場合、ビルドは通りますが、実行時エラーとなります。

最後に

Xamarin.Androidは、AndroidAPIを100%カバーしているため、Androidでできることは、ほぼサポートされているようです。
そのため、今回のAndroidのNumberPickerについても、Xamarinでほぼ同じような方法で実装ができました。

もしAndroidIOSのネイティブアプリ開発をしたことがあり、今後Xamarinをやってみたい場合は、Xamarin.Android、Xamarin.iOSあたりから始めるととっつきやすいと思います。

C#の本

独習C# 新版

独習C# 新版

[改訂新版]C#ポケットリファレンス

[改訂新版]C#ポケットリファレンス

Essential C# 7.0 (6th Edition) (Addison-Wesley Microsoft Technology Series)

Essential C# 7.0 (6th Edition) (Addison-Wesley Microsoft Technology Series)