這是一篇不完整的文章 希望看到的讀者 能夠 跟我完善一下 尤勋!
這系統(tǒng)自帶的日歷 多多少少 會(huì)有弊端 !
手機(jī)版本不一樣 操作不一樣 所以我們?cè)谂袛嚯[藏某一部分之前 還要判斷api的版本
這是我要達(dá)成的效果圖 .png
1.首先繼承一下系統(tǒng)自帶的日歷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.寫一個(gè)遍歷方法
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.調(diào)用
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());
}