3 回答

TA貢獻(xiàn)1895條經(jīng)驗(yàn) 獲得超3個(gè)贊
所有其他答案似乎都令人費(fèi)解,所以我只想指出一個(gè)明顯的問題:您可以通過(簡單地調(diào)用)DatePicker
從a 獲取基礎(chǔ),并使用以下方法設(shè)置其邊界:DatePickerDialog
getDatePicker()
setMinDate(long minDate)
setMaxDate(long maxDate)
其中,自變量是默認(rèn)時(shí)區(qū)中自1970年1月1日00:00:00以來的通常毫秒數(shù)。當(dāng)然,您仍然必須計(jì)算這些值,但這對(duì)于Calendar
該類而言應(yīng)該是微不足道的:只需獲取當(dāng)前日期并加上或減去x
年份即可。
更細(xì)心的讀者會(huì)注意到,直到API級(jí)別11為止,上述設(shè)置器才可用。如果您僅針對(duì)該(或較新的)平臺(tái),則可以使用。如果您還想支持姜餅設(shè)備(Android 2.3 / API級(jí)別9+),則可以改用backport版本DatePicker
。

TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超9個(gè)贊
由于我正在游覽且無法訪問我的PC,因此我無法為您提供工作代碼。但是我可以給您一種實(shí)現(xiàn)目標(biāo)的方法(或者我認(rèn)為)。
我不確定這是否會(huì)完美運(yùn)行,但是值得嘗試的任何方式。
請(qǐng)嘗試此代碼并通知我。
“ DatepickerType”是該類的Integer公共成員變量。
private DatePickerDialog.OnDateSetListener datePickerListener = new DatePickerDialog.OnDateSetListener() {
// when dialog box is closed, below method will be called.
public void onDateSet(DatePicker view, int selectedYear,
int selectedMonth, int selectedDay) {
int y = Calendar.getInstance().get(Calendar.YEAR);
switch(DatepickerType){
case 1:
if(selectedYear>(y-2)){
//Add message if you want
selectedYear = y-2;
}
else if(selectedYear<(y-12)) {
//Add msg if u want
selectedYear = y-12;
}
case 2:
if(selectedYear>(y)){
//Add message if you want
selectedYear = y;
}
else if(selectedYear<(y-2)) {
//Add msg if u want
selectedYear = y-2;
}
}
String year1 = String.valueOf(selectedYear);
String month1 = String.valueOf(selectedMonth+1);
String day1 = String.valueOf(selectedDay);
//do what you need
setLastStatus();
}
};
- 3 回答
- 0 關(guān)注
- 684 瀏覽
添加回答
舉報(bào)