大家在應(yīng)用中大部分都會(huì)使用到日歷
那么這篇文章就來(lái)講一下如何使用系統(tǒng)自帶的日歷DatePickerDialog
首先調(diào)用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);
然后將獲取到的年月日放進(jìn)new出來(lái)的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();
這樣我們就可以進(jìn)行日期的選擇了
但是如果我們想只進(jìn)行年月的選擇不進(jìn)行日選擇怎么辦呢
代碼如下
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)
}
那么還有一個(gè)疑問(wèn)如果我們想改變系統(tǒng)DatePickerDialog的風(fēng)格怎么辦呢
其實(shí)很簡(jiǎn)單
只需要在style.xml中自己定義即可
然后把定義好的樣式放到DatePickerDialog構(gòu)造中的第一個(gè)參數(shù)后即可
代碼如下
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的定義就到此結(jié)束了