【Android】CalendarViewを使ってカレンダーを表示してみる
本日はCalendarViewを使ったカレンダーの表示方法について書いていきます。
レイアウトの実装
layoutにはCalendarViewタグを使用します。
<CalendarView android:id="@+id/calendar" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" />
Activityの実装
カレンダーを表示するだけであれば、Activity側に処理を書く必要はありません。
ここでは、CalendarViewのメソッドについていくつか紹介しておきましょう。詳細は公式ドキュメントをご覧ください。
setDateとgetDate
setDateでCalendarViewに日付を設定することができます。引数の型はlong型です。
getDateで選択されている日付を取得できます。戻り値の型はlong型です。
CalendarView cal = findViewById(R.id.calendar); // 現在日付を設定 cal.setDate(new Date().getTime()); // 現在日付を取得 Date today = new Date(cal.getDate());
setFirstDayOfWeekとgetFirstDayOfWeek
setFirstDayOfWeekで開始曜日を変更することができます。日曜始まりか、月曜始まりかは、けっこう拘る人が多いのではないでしょうか。
引数の型はintですが、Calendarクラスの定数を使用して指定しましょう。
getFirstDayOfWeekでは現在設定されている開始曜日を取得できます。
CalendarView cal = findViewById(R.id.calendar); // 開始曜日を設定する cal.setFirstDayOfWeek(Calendar.MONDAY); // 開始曜日を取得する int firstDayOfWeek = cal.getFirstDayOfWeek;
setOnDateChangeListener
選択された日付が変わった時に処理を行うときに実装します。
OnDateChangeListenerクラスのonSelectedDayChangeメソッドに処理を実装していきます。
CalendarView cal = findViewById(R.id.calendar); calendar.setOnDateChangeListener(new CalendarView.OnDateChangeListener() { @Override public void onSelectedDayChange(@NonNull CalendarView view, int year, int month, int dayOfMonth) { String day = Integer.toString(year) + "/" + String.format("%02d",month + 1) + "/" + String.format("%02d", dayOfMonth); selectDay.setText(day); } });
実際のアプリの動きで確認してみます。
カレンダー日付の選択が変わると、画面下部の日付が変わることを確認してみてください。
初期画面
日付選択後
CalendarViewの紹介は以上です。
簡単にカレンダーを実装することができますね。
最後まで読んでいただきありがとうございます。お疲れさまでした(^_^)/
最後にアプリの宣伝です!CalendarViewも使ってます!
play.google.com