发现有时候,不会的先去网上搜,网上再不满意那就看文档。很能解决问题的一个办法。哈哈 也许你们早就发现了吧。
要实现功能如下:
左右两个EditText,均显示当前时间,当点击某一个时,出现日期或者时间控件,可以对其进行修改。前提是不用xml写。
上代码吧 (*^__^*) 嘻嘻
// 用来保存年月日: private int mYear; private int mMonth; private int mDay; // 声明一个独一无二的标识,来作为要显示DatePicker的Dialog的ID: static final int DATE_DIALOG_ID = 0; //用来保存时间: private int mHour; private int mMinute; static final int TIME_DIALOG_ID = 1;
/** * 设置当前时间和日期 */ EditText date=(EditText)layout.findViewById(R.id.date); date.setInputType(InputType.TYPE_NULL);//关闭软键盘 EditText time=(EditText)layout.findViewById(R.id.time); time.setInputType(InputType.TYPE_NULL);//关闭软键盘 //添加监听 date.setOnClickListener(new dateListener()); time.setOnClickListener(new timeListener());
/** * 实现当前时间的选择和获取 * 监听类 * */ class timeListener implements View.OnClickListener{ @Override public void onClick(View v) { // get the current time final Calendar c = Calendar.getInstance(); mHour = c.get(Calendar.HOUR_OF_DAY); mMinute = c.get(Calendar.MINUTE); // display the current date time.setText( new StringBuilder().append(pad(mHour)).append(":") .append(pad(mMinute))); showDialog(TIME_DIALOG_ID); } } private static String pad(int c) { if (c >= 10) return String.valueOf(c); else return "0" + String.valueOf(c); } // // 需要定义弹出的TimePicker对话框的事件监听器: private TimePickerDialog.OnTimeSetListener mTimeSetListener = new TimePickerDialog.OnTimeSetListener() { public void onTimeSet(TimePicker view, int hourOfDay, int minute) { mHour = hourOfDay; mMinute = minute; time.setText( new StringBuilder().append(pad(mHour)).append(":") .append(pad(mMinute))); } }; /** * 实现当前日期的选择和获取 * * 监听类 */ class dateListener implements View.OnClickListener { @Override public void onClick(View v) { // 获得当前的日期: Calendar currentDate = Calendar.getInstance(); mYear = currentDate.get(Calendar.YEAR); mMonth = currentDate.get(Calendar.MONTH); mDay = currentDate.get(Calendar.DAY_OF_MONTH); /*// 设置文本的内容: date.setText(new StringBuilder().append(mYear).append("-") .append(mMonth + 1).append("-")// 得到的月份+1,因为从0开始 .append(mDay));*/ showDialog(DATE_DIALOG_ID); } } // 需要定义弹出的DatePicker对话框的事件监听器: private DatePickerDialog.OnDateSetListener mDateSetListener = new OnDateSetListener() { public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { mYear = year; mMonth = monthOfYear; mDay = dayOfMonth; // 设置文本的内容: date.setText(new StringBuilder().append(mYear).append("-") .append(mMonth + 1).append("-")// 得到的月份+1,因为从0开始 .append(mDay)); } }; // 当Activity调用showDialog函数时会触发该函数的调用: 66. */ protected Dialog onCreateDialog(int id) { switch (id) { case DATE_DIALOG_ID: return new DatePickerDialog(this, mDateSetListener, mYear, mMonth,mDay); case TIME_DIALOG_ID: return new TimePickerDialog(this, mTimeSetListener, mHour, mMinute, false); } return null; }
点击时间时,运行效果如下: