Xamarin.Android のドキュメント
日付コンテンツのカスタマイズ
コントロール > Calendar > 機能 > 日付コンテンツのカスタマイズ

C1 Calendar コントロールを使用して、日付スロットにカスタムコンテンツを追加できます。それには、DaySlotLoading イベントをサブスクライブし、これらのスロットの背景に画像などのカスタムコンテンツを適用します。この機能を使用して、カレンダーに天気関連の情報を表示できます。

次の図は、日付スロットにカスタムコンテンツを追加した後の Xamarin Calendar です。このカレンダーには、さまざまなアイコンで天気関連の情報が表示されます。

次のコード例は、C#でカレンダーの日付スロットにカスタムコンテンツを追加する方法を示します。この例では、「クイックスタート」で作成したサンプルを使用します。

VisualStudio プロジェクトの YourProject \ Resources \ drawable にリソースファイルとして画像アイコンを追加します。デフォルトでは、これらの画像は C:\<User>\Documents\ComponentOne Samples\Xamarin\Android\C1Calendar101\Resources\drawable にあります。

C# のコード

日付スロットにカスタムコンテンツを追加するには、次の手順を実行します。

MainActivity.cs
コードのコピー
public class MainActivity : Activity
    {
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);
            ActionBar.SetDisplayHomeAsUpEnabled(true);
            SetContentView(Resource.Layout.CustomDayContent);
            var calendar = FindViewById<C1Calendar>(Resource.Id.Calendar);
            calendar.DaySlotLoading += OnDaySlotLoading;
        }
        private void OnDaySlotLoading(object sender, CalendarDaySlotLoadingEventArgs e)
        {
            // 今月の特定日の天気画像を追加する
            if (e.Date.Year == DateTime.Today.Year &&
                e.Date.Month == DateTime.Today.Month &&
                e.Date.Day >= 14 && e.Date.Day <= 23)
            {
                var slot = LayoutInflater.Inflate(Resource.Layout.DaySlot, null);
                var iv = slot.FindViewById<ImageView>(Resource.Id.Image);
                var tv = slot.FindViewById<TextView>(Resource.Id.Day);

                tv.Text = e.Date.Day.ToString();

                switch (e.Date.Day % 5)
                {
                    case 0:
                        iv.SetImageResource(Resource.Drawable.Cloudy);
                        break;
                    case 1:
                        iv.SetImageResource(Resource.Drawable.PartlyCloudy);
                        break;
                    case 2:
                        iv.SetImageResource(Resource.Drawable.Rain);
                        break;
                    case 3:
                        iv.SetImageResource(Resource.Drawable.Storm);
                        break;
                    case 4:
                        iv.SetImageResource(Resource.Drawable.Sun);
                        break;

                }
                e.DaySlot = slot;
            }

        }

        public override bool OnOptionsItemSelected(IMenuItem item)
        {
            if (item.ItemId == global::Android.Resource.Id.Home)
            {
                Finish();
                return true;
            }
            else
            {
                return base.OnOptionsItemSelected(item);
            }
        }
    }