1. 聲明EditText變數,並關聯到相應控制項上
private EditText sellStartTime;private EditText sellEndTime;
sellStartTime = (EditText)findViewById(R.id.editSellStartTime);sellEndTime = (EditText)findViewById(R.id.editSellEndTime);
2. 日期選取器函數
private DatePickerDialog.OnDateSetListener mDateSetListener = new DatePickerDialog.OnDateSetListener() {public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { mYear = year; String mm; String dd; if(monthOfYear<=9) { mMonth = monthOfYear+1; mm="0"+mMonth; } else{ mMonth = monthOfYear+1; mm=String.valueOf(mMonth); } if(dayOfMonth<=9) { mDay = dayOfMonth; dd="0"+mDay; } else{ mDay = dayOfMonth; dd=String.valueOf(mDay); } mDay = dayOfMonth; if(timeFlag == 0) { sellStartTime.setText(String.valueOf(mYear)+"-"+mm+"-"+dd); }else { sellEndTime.setText(String.valueOf(mYear)+"-"+mm+"-"+dd); } } }; protected Dialog onCreateDialog(int id) { switch (id) { case 0: return new DatePickerDialog(this, mDateSetListener, mYear, mMonth, mDay); case 1: return new DatePickerDialog(this, mDateSetListener, mYear, mMonth, mDay); } return null; } // 隱藏手機鍵盤 private void hideIM(View edt){ try { InputMethodManager im = (InputMethodManager) getSystemService(Activity.INPUT_METHOD_SERVICE); IBinder windowToken = edt.getWindowToken(); if(windowToken != null) { im.hideSoftInputFromWindow(windowToken, 0); } } catch (Exception e) { } }
3. 註冊監聽器,當EditText獲得焦點時,或者被點擊時,開啟日期選取器
sellStartTime.setOnClickListener(new OnClickListener(){ public void onClick(View v) { timeFlag = 0; showDialog(0);} });sellEndTime.setOnClickListener(new OnClickListener() {public void onClick(View v) {timeFlag = 1;showDialog(1);}});sellStartTime.setOnFocusChangeListener(new OnFocusChangeListener() {public void onFocusChange(View v, boolean hasFocus) {if (hasFocus == true) {timeFlag = 0;hideIM(v);showDialog(0); }}});sellEndTime.setOnFocusChangeListener(new OnFocusChangeListener() {public void onFocusChange(View v, boolean hasFocus) {if (hasFocus == true) {timeFlag = 1;hideIM(v);showDialog(1); }}});
4. 在包含EditText的LinearLayout中,添加語句
android:focusable="true" android:focusableInTouchMode="true"
這句話,是為了防止EditText自動擷取焦點,觸發日期選取器。