Forever Undecided

2012-02-25

年月を選択するダイアログ

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 に切り替えた途端に残念なダイアログができあがるので注意。

よもよも 2012/02/28 16:31 ありがとうございます!参考になりました。

tetsu831tetsu831 2013/01/31 16:42 ありがたく使わせてもらいます☆

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/koko_u/20120225/1330187058
リンク元
Connection: close