Я понимаю, что этот вопрос немного стар, и что этот ответ не будет применяться к более старым устройствам, но недавно я узнал об этой проблеме на более новом устройстве ( Huawei Mediapad 7 Youth ), поэтому я решил, что обновлю это более новой информацией:
Начиная с API 11, предоставляются методы, необходимые для этого. Помните, что в то время как Calendar может использовать Unix Epoch в качестве нуля, Java (по крайней мере, до ~ JRE 8?) Использует числа со знаком, поэтому отрицательные значения вполне приемлемы. К счастью, вам не нужно полностью осознавать это, так как этот код работает нормально:
// This is API 11!
try {
// Hack to (try to) force minDate to 1888 instead of 1970.
DatePicker dp = dialog.getDatePicker();
Calendar minCal = Calendar.getInstance();
minCal.set(1888, Calendar.JANUARY, 1, 0, 0, 0);
dp.setMinDate(minCal.getTimeInMillis());
if (maxDate > 0)
dp.setMaxDate(maxDate);
} catch (NoSuchMethodError e) {
Log.w(TAG, "Can't set min/max dates: device/Android version is too old.");
}
Я использовал 1888, так что любые отчеты, утверждающие, что это минимум, проясняют, что код был выполнен, а не проигнорирован / переопределен. Должен отметить, что я еще не слышал, работает ли это на указанном устройстве.