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中:
<DatePicker android:id="@+id/myDatePicker" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:startYear="2015" android:endYear="2020" android:calendarViewShown="true" android:spinnersShown="true" />
MainActivity.java中:
private DatePicker datePicker; private Calendar calendar; private int year; private int month; private int day; // 获取日历对象 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, new DatePicker.OnDateChangedListener() { @Override public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) { setTitle(year + "-" + (monthOfYear + 1) + "-" + dayOfMonth); } });
效果图如下:
当用户更改了TimePicker里的时、分时,将触发OnTimeChangedListener监听器的onTimeChanged事件。
示例:
activity_main.xml中:
<TimePicker android:id="@+id/myTimePicker" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" />
MainActivity.java中:
private TimePicker timePicker; private Calendar calendar; private int hour; private int minute; // 获取日历对象 calendar = Calendar.getInstance(); // 获取对应的时、分的信息 hour = calendar.get(Calendar.HOUR_OF_DAY); minute = calendar.get(Calendar.MINUTE); timePicker = (TimePicker) findViewById(R.id.myTimePicker); // 为TimePicker指定监听器 timePicker.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener() { @Override public void onTimeChanged(TimePicker view, int hourOfDay, int minute) { setTitle(hourOfDay + "-" + minute); } });
效果图如下:
DatePickerDialog和TimePickerDialog,与DatePicker和TimePicker,最大的区别是DatePicker和TimePicker是直接显示在屏幕画面上的,而DatePickerDialog和TimePickerDialog对象则是以弹出Dialog的方式来显示。
创建DatePickerDialog的语法如下:
DatePickerDialog(Context context, DatePickerDialog.OnDateSetListener callBack, int year, int monthOfYear, int dayOfMonth)
参数说明:
当用户更改了DatePickerDialog里的年、月、日时,将触发OnDateSetListener监听器的onDateSet()事件。
示例:
private Calendar calendar; private int year; private int month; private int day; // 获取日历对象 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); // 初始化DatePickerDialog new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { setTitle(year + "-" + (monthOfYear + 1) + "-" + dayOfMonth); } }, year, month, day).show();
效果图:
创建TimePickerDialog的语法如下:
TimePickerDialog(Context context, TimePickerDialog.OnTimeSetListener listener, int hourOfDay, int minute, boolean is24HourView)
参数说明:
当用户更改了TimePickerDialog里的时、分时,将触发OnTimeSetListener监听器的onTimeSet()事件。
示例:
private Calendar calendar; private int year; private int month; private int day; // 获取日历对象 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); // 初始化TimerPickerDialog new TimePickerDialog(this, new TimePickerDialog.OnTimeSetListener() { @Override public void onTimeSet(TimePicker view, int hourOfDay, int minute) { setTitle(hourOfDay + ":" + minute); } }, hour, minute, true).show();
效果图:
NumberPicker是数值选择器,用于让用户输入数值,用户既可以通过键盘输入数值,也可以通过拖动来选择数值。
NumberPicker的常用方法如下:
方法 | 描述 |
---|---|
setMinValue(int minVal) | 设置该组件支持的最小值。 |
setMaxValue(int maxVal) | 设置该组件支持的最大值。 |
setValue(int value) | 设置该组件的当前值。 |
getMaxValue() | 获得该组件设置的最大值。 |
getMinValue() | 获得该组件设置的最小值。 |
getValue() | 获得当前组件显示的值。 |
setValue(int value) | 设置当前组件显示的值。 |
示例:
activity_main.xml中:
<NumberPicker android:id="@+id/numberPicker" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal"/> <TextView android:id="@+id/currentNumShow" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginTop="20dp" android:textSize="30dp" />
MainActivity.java中:
private NumberPicker numberPicker; private TextView currentNumShow; private int minNum = 1, maxNum = 20, currentNum = 10; // 更新显示当前值的TextView private void showCurrentNum() { 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(new NumberPicker.OnValueChangeListener() { @Override public void onValueChange(NumberPicker picker, int oldVal, int newVal) { currentNum = newVal; // 在TextView中更新数据 showCurrentNum(); } });
效果图如下: