Android手机开发:EditText+DatePicker带日期选择器的编辑框
2011-08-28 18:27
447 查看
1. 声明EditText变量,并关联到相应控件上
2. 日期选择器函数
3. 注册监听器,当EditText获得焦点时,或者被点击时,打开日期选择器
4. 在包含EditText的LinearLayout中,添加语句
这句话,是为了防止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自动获取焦点,触发日期选择器。
相关文章推荐
- Android手机开发:EditText+DatePicker带日期选择器的编辑框
- EditText+DatePicker带日期选择器的编辑框
- 在Android EditText中实现日期时间选择器(DatePicker和TimePicker)
- 点击EditText 弹出日期选择器DatePickerDialog
- Android中实现日期时间选择器(DatePicker和TimePicker)
- Android中实现日期时间选择器(DatePicker和TimePicker)
- 50个Android开发技巧(09 避免用EditText对日期进行验证)
- Android中实现日期时间选择器(DatePicker和TimePicker)
- Android日期选择器DatePickerDialog的使用
- Android中实现日期时间选择器(DatePicker和TimePicker)
- Android开发教程 --- 葵花宝典第五层 控件之 Menu DatePicker TimePicker AutoCompleteTextView MultiAutoCompleteTextView
- Android 日期选择器、日期范围选择器:MaterialDateRangePicker
- Android 日期选择器DatePickerDialog 的使用
- Android日期时间选择器DatePicker、TimePicker日期时间改变事件响应(Android学习笔记)
- 50个Android开发技巧(09 避免用EditText对日期进行验证)
- 50个Android开发技巧(09 避免用EditText对日期进行验证)
- Android开发中DatePicker日期与时间控件实例代码
- 【Android 开发】:UI控件之 DatePicker 输入日期控件的使用
- Android开发视频第二季之二:DatePicker、DatePickerDialog和AutoCompleteTextView
- 50个Android开发技巧(09 避免用EditText对日期进行验证)