2011年6月5日日曜日

[Android]DatePickerで年と月だけ選ばせる方法

日付を選ばせるUIとして激しく便利なDatePickerですが、こいつは年・月・日の三つを選ばせるUIですよね。普通はこれで良いんですけど、たとえば「年・月だけ選ばせたい」時にはちと厄介な事になります。いや、日いらねぇんだって。表示すんなって。あってもユーザー混乱するだろ、と。

今までは仕方なく
*日の設定は無視されます
って書いておいたんだけど、これはどうにもかっこわるすぎる。で、いろいろいじってみたらコードは奇麗じゃないかもだけど、入らない項目を消す方法がわかったのでメモっておこう。

ではコードをどうぞ。
ようは、DatePickerもViewであることにかわりはないわけで。その子のViewというのが年・月・日のそれぞれのあの便利なViewなわけで。そのgetChildAt(2)、つまり3番目の要素=日を非表示にさせてる、というわけ。かなりむりやり^^;
今後DatePickerのViewの構造が変わってしまえばつかえなくなるんだけど、とりあえず現状で「日は消せる!」ということがわかったわけです。
なにか日であることを特定できる情報で判断して絞り込めれば良いんだけどね…今の俺ではここが限界でした。

4 件のコメント:

  1. 10月、11月、12月。
    2桁目が隠れてしまい、0月、1月、2月
    となりませんか?

    返信削除
  2. >10月、11月、12月。
    >2桁目が隠れてしまい、0月、1月、2月
    >となりませんか?
    端末やエミュレータによってはなるものもありますけど、この部分はまったくいじってない範囲で、元からDatePickerが抱えてる不具合のようなものですね・・・
    英語圏では問題が無いからあっさり残ってしまってたんでしょう。

    返信削除
  3. イカスッっす!
    大変助かりました

    カスタムしやすいんで
    DatePickerDialog使わなくなりましたw

    このページなかったらあきらめてましたよ
    ほんまにw

    返信削除
  4. 日を選ばせたくなくてググったら検索結果の一番上に。
    出来ることがわかり、大変助かりました。

    返信削除