[Android] Calendarを表示

投稿者: | 2021年3月17日

Androidアプリを開発しているときに、カレンダーを表示したいと思ったので、基本的な手順を記載しておきます。

とてもシンプルな手順で実装できます。

CalendarViewの表示

Viewを表示するだけなら、layout定義のxmlファイルにCalendarViewを設定するだけでOKです。

    <CalendarView
        android:id="@+id/calendar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

これだけで、カレンダーは表示されます。

エミュレータ起動時の画面はこのようになります。

リスナーの設定

日付を選択した場合の動作を定義する場合は、CalendarView#setOnDateChangeListenerをセットします。

今回は、選択した日付をトーストで表示するようにしてみます。

MainのActivityクラスに下記を実装します。

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.widget.CalendarView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        CalendarView calendar = findViewById(R.id.calendar);
        calendar.setOnDateChangeListener(
                new CalendarView.OnDateChangeListener() {
                    @Override
                    public void onSelectedDayChange(@NonNull CalendarView calendarView, int year, int month, int date) {
                        String message = year + "/" + (month + 1) + "/" + date;
                        Toast.makeText(getApplicationContext(), message, Toast.LENGTH_LONG).show();
                    }
                }
        );

    }
}

 

動作確認です。エミュレータで起動した画面がこちら。

選択した日付が、画面下にトーストで表示されているのがわかります。