年月を選択するダイアログ
Android には標準で DatePicker が用意されているけど、当然年月日を選択するダイアログです。
まれに年月だけを選択するダイアログが欲しくなるけど、イチから作るのも面倒。
DatePicker の日付だけ落せばいいんじゃね?ということでやってみた。
AlertDialog.Builder builder = new AlertDialog.Builder(getContext()); final DatePicker datePicker = new DatePicker(getContext()); datePicker.updateDate(year, month, 1); int day_id = Resources.getSystem().getIdentifier("day", "id", "android"); datePicker.findViewById(day_id).setVisibility(View.GONE); builder.setView(datePicker) .setTitle(getContext().getString(R.string.select_month)) .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface d, int w) { /* むしゃむしゃ */ } }) .setNegativeButton(android.R.string.cancel, null) .create() .show();
ミソは
int day_id = Resources.getSystem().getIdentifier("day", "id", "android"); datePicker.findViewById(day_id).setVisibility(View.GONE);
だけ。
DatePicker の日付の部分のリソースIDは R.id.day なんだけど、普通は触れない、でも触れる。
ViewGroup#getChildAt() とか使って決め打ちで View を取り去ると言語を US に切り替えた途端に残念なダイアログができあがるので注意。