这是一篇不完整的文章 希望看到的读者 能够 跟我完善一下 !
这系统自带的日历 多多少少 会有弊端 !
手机版本不一样 操作不一样 所以我们在判断隐藏某一部分之前 还要判断api的版本
1.首先继承一下系统自带的日历dialog
public class YearPickerDialog extends DatePickerDialog {
public YearPickerDialog(Context context, OnDateSetListener callBack, int year, int monthOfYear, int dayOfMonth) {
super(context, callBack, year, monthOfYear, dayOfMonth);
}
@Override
public void onDateChanged(DatePicker view, int year, int month, int day) {
super.onDateChanged(view, year, month, day);
this.setTitle(year + "年" );
}
}
2.写一个遍历方法
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;
}
3.调用
final Calendar calendar = Calendar.getInstance();
YearPickerDialog dialog= new YearPickerDialog(getActivity(), new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
calendar.set(Calendar.YEAR, year);
calendar.set(Calendar.MONTH, monthOfYear);
LogUtils.d(DateUtil.clanderTodatetime(calendar, "yyyy-MM"));
}
},calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DATE));
dialog.show();
DatePicker dp = findDatePicker((ViewGroup) dialog.getWindow().getDecorView());
if (dp != null) {
((ViewGroup)((ViewGroup) dp.getChildAt(0)).getChildAt(0)).getChildAt(1).setVisibility(View.GONE);
}
4.其中的DateUtil 类方法
public static String clanderTodatetime(Calendar calendar, String style) {
SimpleDateFormat formatter = new SimpleDateFormat(style);
return formatter.format(calendar.getTime());
}