以下は私にとって完璧に機能します。
まず、日付ピッカーウィジェットの入力を「none」に設定して、ソフトキーボードがポップアップしないようにします。
<EditText android:inputType="none" ... ></EditText>
次に、これらのイベントリスナーを追加して、日付ピッカーを含むダイアログを表示します。
// Date picker
EditText dateEdit = (EditText) findViewById(R.id.date);
dateOfBirthEdit.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_UP) {
showDialog(DIALOG_DATE_PICKER);
}
return false;
}
});
dateEdit.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
showDialog(DIALOG_DATE_PICKER);
} else {
dismissDialog(DIALOG_DATE_PICKER);
}
}
});
最後に一つだけ。入力した日、月、または年が日付ピッカーから正しくコピーされていることを確認するにはdatePicker.clearFocus()
、たとえば、を介して値を取得する前に呼び出しますgetMonth()
。