【Android 4.x】【開発】Androidでカレンダー表示

4.xのDatePickerでは従来のピッカーの他にカレンダーも選択できる。
すごく便利。

今回はlayout.xmlでボタンを設置して、
ボタンを押すと、カレンダー or ピッカーが出るようにする。
ただ、xmlはボタンを置くだけなので省略。

以下のコードで 「ピッカー+カレンダー」が画面中央にモーダルで表示される。

public class MainActivity extends Activity {
	private DatePickerDialog mDatePickerDialog;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		//DatePickerDialogを作る。
		final Calendar calendar = Calendar.getInstance();
	    final int year = calendar.get(Calendar.YEAR);
	    final int month = calendar.get(Calendar.MONTH);
	    final int day = calendar.get(Calendar.DAY_OF_MONTH);
		mDatePickerDialog = new DatePickerDialog(
			MainActivity.this, 
			new DatePickerDialog.OnDateSetListener() {
				@Override
				public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
					Toast.makeText(MainActivity.this, String.valueOf(dayOfMonth), Toast.LENGTH_SHORT).show();
				}
			}, 
			year, 
			month, 
			day
		);
		//カレンダーを表示させるボタン
		Button showCal = (Button)findViewById(R.id.openCal);
		showCal.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				mDatePickerDialog.show();
			}
		});
	}
}

ただ、普通はピッカーorカレンダーの片方のみを表示させると思うので、
どちらかを消す。

mDatePickerDialog.getDatePicker().setSpinnersShown(false); //ピッカーを消す
mDatePickerDialog.getDatePicker().setCalendarViewShown(false); //カレンダーを消す

カレンダーの左端に表示されている週は以下で消える。

mDatePickerDialog.getDatePicker().getCalendarView().setShowWeekNumber(false);

ボタンのテキストを変更したい or 複数のボタンでコールバックが必要な時は以下のようにする。

mDatePickerDialog.setButton(DatePickerDialog.BUTTON_POSITIVE, "ok", new DialogInterface.OnClickListener() {
	@Override
	public void onClick(DialogInterface dialog, int which) {
		//何かの処理
	}
});