android5.0及以上的版本中,DatePicker 在 calendar 模式下,自带了一个快速切换年份和日期的头部:
带头部的DatePicker
隐藏这个头部的原理就是找到相应的 View 并设置 Visibility 为 Gone.
在 DatePicker 源码中,如果 mode 使用的是 Calendar 则会调用 createCalendarUIDelegate 方法。
switch (mode) {
case MODE_CALENDAR:
mDelegate = createCalendarUIDelegate(context, attrs, defStyleAttr, defStyleRes);
break;
case MODE_SPINNER:
default:
mDelegate = createSpinnerUIDelegate(context, attrs, defStyleAttr, defStyleRes);
break;
}
createCalendarUIDelegate 则会返回一个 DatePickerSpinnerDelegate
private DatePickerDelegate createCalendarUIDelegate(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
return new DatePickerCalendarDelegate(this, context, attrs, d