Android,Mobile2015-11-24
一. DatePicker
DatePicker常用的XML属性
XML属性描述
android:calendarViewShown设置该日期选择是否显示CalendarView组件。
android:endYear设置日期选择器允许选择的最后一年。
android:maxDate设置该日期选择器的最大日期。以mm/dd/yyyy格式指定最大日期。
android:minDate设置该日期选择器的最小日期。以mm/dd/yyyy格式指定最小日期。
android:spinnersShown设置该日期选择器是否显示Spinner日期选择组件。
android:startYear设置日期选择器允许选择的第一年。
具体API可参考官方网站:http://developer.android.com/reference/android/widget/DatePicker.html
当用户更改了DatePicker里的年、月、日时,将触发OnDateChangedListener监听器的onDateChange()事件。
示例:
activity_main.xml中:
MainActivity.java中:
privateDatePicker datePicker;privateCalendar calendar;privateintyear;privateintmonth;privateintday;// 获取日历对象calendar = Calendar.getInstance();// 获取当前对应的年、月、日的信息year = calendar.get(Calendar.YEAR);month = calendar.get(Calendar.MONTH) +1;day = calendar.get(Calendar.DAY_OF_MONTH);datePicker = (DatePicker) findViewById(R.id.myDatePicker);// dataPicker初始化datePicker.init(year, month, day,newDatePicker.OnDateChangedListener() { @OverridepublicvoidonDateChanged(DatePicker view,intyear,intmonthOfYear,intdayOfMonth){ setTitle(year +"-"+ (monthOfYear +1) +"-"+ dayOfMonth); }});
效果图如下:
二. TimerPicker
当用户更改了TimePicker里的时、分时,将触发OnTimeChangedListener监听器的onTimeChanged事件。
示例:
activity_main.xml中:
MainActivity.java中:
privateTimePicker timePicker;privateCalendar calendar;privateinthour;privateintminute;// 获取日历对象calendar = Calendar.getInstance();// 获取对应的时、分的信息hour = calendar.get(Calendar.HOUR_OF_DAY);minute = calendar.get(Calendar.MINUTE);timePicker = (TimePicker) findViewById(R.id.myTimePicker);// 为TimePicker指定监听器timePicker.setOnTimeChangedListener(newTimePicker.OnTimeChangedListener() { @OverridepublicvoidonTimeChanged(TimePicker view,inthourOfDay,intminute){ setTitle(hourOfDay +"-"+ minute); }});
效果图如下:
三. DatePickerDialog
DatePickerDialog和TimePickerDialog,与DatePicker和TimePicker,最大的区别是DatePicker和TimePicker是直接显示在屏幕画面上的,而DatePickerDialog和TimePickerDialog对象则是以弹出Dialog的方式来显示。
创建DatePickerDialog的语法如下:
DatePickerDialog(Context context, DatePickerDialog.OnDateSetListener callBack,intyear,intmonthOfYear,intdayOfMonth)
参数说明:
context:当前上下文;
callback:OnDateSetListener日期改变监听器;
year:初始化的年;
monthOfYear:初始化的月(从0开始计数,所以实际应用时需要加1);
dayOfMonth:初始化的日;
当用户更改了DatePickerDialog里的年、月、日时,将触发OnDateSetListener监听器的onDateSet()事件。
示例:
privateCalendar calendar;privateintyear;privateintmonth;privateintday;// 获取日历对象calendar = Calendar.getInstance();// 获取当前对应的年、月、日的信息year = calendar.get(Calendar.YEAR);month = calendar.get(Calendar.MONTH) +1;day = calendar.get(Calendar.DAY_OF_MONTH);datePicker = (DatePicker) findViewById(R.id.myDatePicker);// 初始化DatePickerDialognewDatePickerDialog(this,newDatePickerDialog.OnDateSetListener() { @OverridepublicvoidonDateSet(DatePicker view,intyear,intmonthOfYear,intdayOfMonth){ setTitle(year +"-"+ (monthOfYear +1) +"-"+ dayOfMonth); }}, year, month, day).show();
效果图:
四. TimePickerDialog
创建TimePickerDialog的语法如下:
TimePickerDialog(Context context, TimePickerDialog.OnTimeSetListener listener,inthourOfDay,intminute,booleanis24HourView)
参数说明:
context:当前上下文;
listener:时间改变监听器;
hourOfDay:初始化的小时;
minute:初始化的分钟;
is24HourView:是否以24小时显示时间;
当用户更改了TimePickerDialog里的时、分时,将触发OnTimeSetListener监听器的onTimeSet()事件。
示例:
privateCalendar calendar;privateintyear;privateintmonth;privateintday;// 获取日历对象calendar = Calendar.getInstance();// 获取当前对应的年、月、日的信息year = calendar.get(Calendar.YEAR);month = calendar.get(Calendar.MONTH) +1;day = calendar.get(Calendar.DAY_OF_MONTH);datePicker = (DatePicker) findViewById(R.id.myDatePicker);// 初始化TimerPickerDialognewTimePickerDialog(this,newTimePickerDialog.OnTimeSetListener() { @OverridepublicvoidonTimeSet(TimePicker view,inthourOfDay,intminute){ setTitle(hourOfDay +":"+ minute); }}, hour, minute,true).show();
效果图:
五. NumberPicker
NumberPicker是数值选择器,用于让用户输入数值,用户既可以通过键盘输入数值,也可以通过拖动来选择数值。
NumberPicker的常用方法如下:
方法描述
setMinValue(int minVal)设置该组件支持的最小值。
setMaxValue(int maxVal)设置该组件支持的最大值。
setValue(int value)设置该组件的当前值。
getMaxValue()获得该组件设置的最大值。
getMinValue()获得该组件设置的最小值。
getValue()获得当前组件显示的值。
setValue(int value)设置当前组件显示的值。
示例:
activity_main.xml中:
MainActivity.java中:
privateNumberPicker numberPicker;privateTextView currentNumShow;privateintminNum =1, maxNum =20, currentNum =10;// 更新显示当前值的TextViewprivatevoidshowCurrentNum(){ currentNumShow.setText("Current Number is "+ currentNum +".");}numberPicker = (NumberPicker) findViewById(R.id.numberPicker);currentNumShow = (TextView) findViewById(R.id.currentNumShow);// 设置NumberPicker属性numberPicker.setMinValue(minNum);numberPicker.setMaxValue(maxNum);numberPicker.setValue(currentNum);// 监听数值改变事件numberPicker.setOnValueChangedListener(newNumberPicker.OnValueChangeListener() {@OverridepublicvoidonValueChange(NumberPicker picker,intoldVal,intnewVal){ currentNum = newVal;// 在TextView中更新数据showCurrentNum(); }});
效果图如下: