3 回答
TA贡献1895条经验 获得超3个赞
所有其他答案似乎都令人费解,所以我只想指出一个明显的问题:您可以通过(简单地调用)DatePicker
从a 获取基础,并使用以下方法设置其边界:DatePickerDialog
getDatePicker()
setMinDate(long minDate)
setMaxDate(long maxDate)
其中,自变量是默认时区中自1970年1月1日00:00:00以来的通常毫秒数。当然,您仍然必须计算这些值,但这对于Calendar
该类而言应该是微不足道的:只需获取当前日期并加上或减去x
年份即可。
更细心的读者会注意到,直到API级别11为止,上述设置器才可用。如果您仅针对该(或较新的)平台,则可以使用。如果您还想支持姜饼设备(Android 2.3 / API级别9+),则可以改用backport版本DatePicker
。
TA贡献1853条经验 获得超9个赞
由于我正在游览且无法访问我的PC,因此我无法为您提供工作代码。但是我可以给您一种实现目标的方法(或者我认为)。
我不确定这是否会完美运行,但是值得尝试的任何方式。
请尝试此代码并通知我。
“ 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 关注
- 643 浏览
添加回答
举报