android 自定义 datepickerdialog,Android DatePickerDialog使用指南

本文介绍了如何在Android中使用DatePickerDialog,包括获取当前日期、创建仅显示年月的DatePicker、自定义Dialog样式的方法,提供了详细的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

大家在应用中大部分都会使用到日历

那么这篇文章就来讲一下如何使用系统自带的日历DatePickerDialog

首先调用Calendar类获取年月日

Calendar ca = Calendar.getInstance();

int mYear = ca.get(Calendar.YEAR);

int mMonth = ca.get(Calendar.MONTH);

int mDay = ca.get(Calendar.DAY_OF_MONTH);

然后将获取到的年月日放进new出来的DatePickerDialog中

DatePickerDialog datePickerDialog = new DatePickerDialog(getContext(),

new DatePickerDialog.OnDateSetListener() {

@Override

public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {

mYear = year;

mMonth = month;

mDay = dayOfMonth;

final String data = (month+1) + "月-" + dayOfMonth + "日 ";

}

},

mYear, mMonth, mDay);

datePickerDialog.show();

这样我们就可以进行日期的选择了

但是如果我们想只进行年月的选择不进行日选择怎么办呢

代码如下

private DatePicker findDatePicker(ViewGroup group) {

if (group != null) {

for (int i = 0, j = group.getChildCount(); i < j; i++) {

View child = group.getChildAt(i);

if (child instanceof DatePicker) {

return (DatePicker) child;

} else if (child instanceof ViewGroup) {

DatePicker result = findDatePicker((ViewGroup) child);

if (result != null)

return result;

}

}

}

return null;

}

//只显示年月,隐藏掉日

DatePicker dp = findDatePicker((ViewGroup) datePickerDialog.getWindow().getDecorView());

if (dp != null) {

((ViewGroup)((ViewGroup)dp.getChildAt(2)).getChildAt(2))

.getChildAt(2).setVisibility(View.GONE);

//如果想隐藏掉年,将getChildAt(2)改为getChildAt(0)

}

那么还有一个疑问如果我们想改变系统DatePickerDialog的风格怎么办呢

其实很简单

只需要在style.xml中自己定义即可

然后把定义好的样式放到DatePickerDialog构造中的第一个参数后即可

代码如下

DatePickerDialog datePickerDialog = new DatePickerDialog(getContext(), R.style.MyDatePickerDialogTheme,

new DatePickerDialog.OnDateSetListener() {

@Override

public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {

mYear = year;

mMonth = month;

mDay = dayOfMonth;

final String data = (month+1) + "月-" + dayOfMonth + "日 ";

}

},

mYear, mMonth, mDay);

datePickerDialog.show();

好了到这里DatePickerDialog的定义就到此结束了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值