Androidアプリで日付指定できるアイテムとして、
DatePickerやDatePickerDialogがあります。
これらをカスタマイズした時にハマったことを書いておきます。
アプリは主に公開用ではなく自分用に作っているのですが、
使用者(妻)から次のような要望が来ました。
「日付を指定するときに、"+5日"や"-5日"ボタンが欲しい」
ふむ。設計としては、DatePickerを1つとボタン2つを配置して、
+5ボタンが押されたらDatePickerの日付を+5、
-5ボタンが押されたらDatePickerの日付を‐5だなと。
簡単だ。
コーディング。できた。うん、動作してる。
しかし、これだけでは次の操作時に意図した動きとなりませんでした。
0.DatePickerの表示は、年/月/日の順に2013/02/06とする(例)
1.「月」部分のEditTextをタップして、月を「05」と手入力する
2.「+5ボタン」をタップする
3.DatePickerの表示は、2013/02/11となる
おや、2013/05/11とはなりません。困りました。
■解決方法
色々とデバッグを重ねて分かった事なのですが、
DatePickerは、EditText部分をタップして数値を直接入力した場合、
「フォーカスがEditTextから外れた時に初めて」設定が反映されるようです。
このため、「+5ボタン」などが押されたときに、
DatePickerからフォーカスを外す処理を加えればOKです。
| // DatePickerからフォーカスを外す
DatePicker dp = ****;
dp.clearFocus();
|
3日ほどハマりました。