您的位置:

Android日期选择详解

一、基本概念

日期选择是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则可以展示日历并支持滑动、点击选中日期。

通过上述方法,开发者可以轻松地控制日期选择器的最大最小日期、初始日期以及添加日期改变的监听器等。