一、基本概念
日期选择是Android系统常用的UI组件之一,用于让用户选择日期。
Android提供了DatePicker和CalendarView两种日期选择器,其中DatePicker是最常用的一种。
DatePicker可以让用户选择年、月、日三个日期,同时也可以选择一个通用的主题样式。
二、DatePicker详解
1、基本用法
<DatePicker
android:id="@+id/date_picker"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
这是一个基本的DatePicker控件,用于让用户选择日期。但默认情况下,用户只能在公历中选择日期。
2、设置初始日期
// 设置初始日期为当前日期
DatePicker datePicker = findViewById(R.id.date_picker);
Calendar calendar = Calendar.getInstance();
datePicker.init(calendar.get(Calendar.YEAR),
calendar.get(Calendar.MONTH),
calendar.get(Calendar.DAY_OF_MONTH), null);
可以使用DatePicker的init()方法来设置初始日期,其中需要传入当前年月日的值。
3、设置最小日期和最大日期
// 设置最小日期为2020年1月1日
datePicker.setMinDate(1577808000000L);
// 设置最大日期为2021年12月31日
datePicker.setMaxDate(1640966399000L);
使用DatePicker的setMinDate()和setMaxDate()方法可以分别设置最小日期和最大日期,需要传入时间戳值。
4、设置日期改变监听器
datePicker.setOnDateChangedListener(new DatePicker.OnDateChangedListener() {
@Override
public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
// 日期改变时执行的操作
}
});
可以使用DatePicker的setOnDateChangedListener()方法来设置日期改变的监听器,在日期改变时执行相应的操作。
三、CalendarView详解
1、基本用法
<CalendarView
android:id="@+id/calendar_view"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
这是一个基本的CalendarView控件,用于展示日历,用户可以在上面滑动、点击选中日期。
2、设置初始日期
// 设置初始日期为当前日期
CalendarView calendarView = findViewById(R.id.calendar_view);
calendarView.setDate(System.currentTimeMillis());
calendarView.setShowWeekNumber(false);
使用CalendarView的setDate()方法可以设置初始日期,需要传入时间戳值。
setShowWeekNumber()方法是用于设置是否展示周数。
3、设置最小日期和最大日期
// 设置最小日期为2021年1月1日
calendarView.setMinDate(1609430400000L);
// 设置最大日期为2022年12月31日
calendarView.setMaxDate(1661980799000L);
使用CalendarView的setMinDate()和setMaxDate()方法可以分别设置最小日期和最大日期,需要传入时间戳值。
4、设置日期改变监听器
calendarView.setOnDateChangeListener(new CalendarView.OnDateChangeListener() {
@Override
public void onSelectedDayChange(@NonNull CalendarView view, int year, int month, int dayOfMonth) {
// 日期改变时执行的操作
}
});
可以使用CalendarView的setOnDateChangeListener()方法来设置日期改变的监听器,在日期改变时执行相应的操作。
四、常用主题样式
1、Material主题
<DatePicker
android:id="@+id/date_picker_material"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:datePickerMode="spinner"
android:theme="@style/DatePicker.Material" />
在DatePicker中使用android:theme属性,可以设置Material主题样式。
2、Holo主题
<DatePicker
android:id="@+id/date_picker_holo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:calendarViewShown="false"
android:spinnersShown="true"
android:theme="@android:style/Theme.Holo.Light" />
在DatePicker中使用android:theme属性,可以设置Holo主题样式。
五、总结
Android系统提供了DatePicker和CalendarView两种日期选择器,可以让开发者轻松实现日期选择功能。
DatePicker可以让用户选择年、月、日三个日期,同时也可以选择Material或Holo样式主题;而CalendarView则可以展示日历并支持滑动、点击选中日期。
通过上述方法,开发者可以轻松地控制日期选择器的最大最小日期、初始日期以及添加日期改变的监听器等。