Android DatePicker的简单实用

Android DatePicker的简单实用项目需要做一个年月日选择框, 在PickerView这个三方库不满足需求的情况下, 使用DatePicker的一次实战经验

这是我参与 8 月更文挑战的第 3 天,活动详情查看: 8月更文挑战

背景

项目需要做一个年月日选择框, 之前一直用PickerView这个三方库做日期选择,所以当时第一时间就想到了他, 由于需求需要根据不同的地区显示对应的日期格式PickerView显然不满足条件,于是从google查到了DatePicker

效果

Kapture 2021-08-03 at 22.03.03.gif

集成

1.在xml中插入DatePicker

<DatePicker android:id="@+id/data_picker" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#FFFFFFFF" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" />

2.在代码中初始化并调用

在init方法中传入需要初始化显示的年月日

Calendar calendar = Calendar.getInstance();
DatePicker datePicker = findViewById(R.id.data_picker);
datePicker.init(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_YEAR), new DatePicker.OnDateChangedListener() {
    @Override
    public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
        
    }
});

效果如下

image.png 由于需求年月日是滚轮形式, 当前样式并不满足需求.

样式调整

在查看文档 时发现DatePickerandroid:datePickerMode简介如下

Defines the look of the widget. Prior to the L release, the only choice was spinner. As of L, with the Material theme selected, the default layout is calendar, but this attribute can be used to force spinner to be used instead.
Must be one of the following constant values.

大概意思就是说从Android L开始DatePicker默认样式为日历样式,如果想调整样式android:datePickerMode就必须设置为以下两个值的其中之一

字段 简介
calendar 2 Date picker with calendar to select the date.
spinner 1 Date picker with spinner controls to select the date.

添加对应的值之后效果如下

image.png 滚轮确实出来了,但是日历并没有消失, 进过查到发现有android:calendarViewShown这个属性,对应的是布尔值.介绍如下:

Whether the calendar view is shown. Only valid for “spinner” mode.
May be a boolean value, such as “true” or “false“.

最终xml代码如下

<DatePicker android:id="@+id/data_picker" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#FFFFFFFF" android:calendarViewShown="false" android:datePickerMode="spinner" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" />

效果图如下

image.png 至此Ui满足需求

设置最大值最小值

在需求中选择日期有时会有最大值最小值的要求 在文档中发现有setMaxDatesetMinDate这两个方法分别可以设置最大值和最小值

PS: 这两个方法需要的时间参数为毫秒级别

根据不同地区格式化对应的日期格式

目前我在项目中用到的方法是java.text.包下的DateFormat类中的方法

java.text.DateFormat.getDateInstance(java.text.DateFormat.MEDIUM).format(Date(date))

PS: DatePicker的回调方法中年月日是分开返的,而不是返回的时间戳,需要自己转换

DatePicker常用属性

android:spinnersShown:是否显示滚轮 android:calendarViewShown:是否显示日历 android:datePickerMode:控件显示方式calendarspinner android:calendarTextColor:日历文字颜色 android:startYear:日历开始年份 android:endYear:日历结束年份 android:minDate:日历最小值 android:maxDate:日历最大值

项目地址

项目地址

今天的文章Android DatePicker的简单实用分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/14356.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注