日期选择器和时间选择器-设置最大值和最小值

我正在尝试制作类似提醒的应用程序。我想允许用户选择不是现在(至少从现在起5分钟)的日期和时间,并且我也想禁止用户选择距离太远的日期-

例如30天。我创建了datePicker和timePicker,使它们在单击按钮时弹出,但是找不到设置最小值和最大值的方法。

 public void showDateDialog() {

btnDate = (Button) findViewById(R.id.buttonDate);

btnDate.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

showDialog(DATE_DIALOG_ID);

}

});

}

public void showTimeDialog() {

btnTime = (Button) findViewById(R.id.buttonTime);

btnTime.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

showDialog(TIME_DIALOG_ID);

}

});

}

@Override

protected Dialog onCreateDialog(int id) {

switch (id) {

case DATE_DIALOG_ID:

// create a new DatePickerDialog with values you want to show

return new DatePickerDialog(this, datePickerListener, yearSet, monthSet, daySet);

// create a new TimePickerDialog with values you want to show

case TIME_DIALOG_ID:

return new TimePickerDialog(this, timePickerListener, hourSet, minuteSet, false);

}

return null;

}

private DatePickerDialog.OnDateSetListener datePickerListener = new DatePickerDialog.OnDateSetListener() {

@Override

public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {

yearSet = year;

monthSet = monthOfYear + 1;

daySet = dayOfMonth;

btnDate.setText(new SimpleDateFormat("DD").format(daySet) + "-" + new SimpleDateFormat("MMM").format(monthSet) + "-" + yearSet);

}

};

private TimePickerDialog.OnTimeSetListener timePickerListener = new TimePickerDialog.OnTimeSetListener() {

@Override

public void onTimeSet(TimePicker view, int hour, int minute) {

hourSet = hour;

minuteSet = minute;

btnTime.setText(hourSet + ":" + new SimpleDateFormat("MM").format(hourSet));

}

};

回答:

试试这个:

btnDate.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

final DatePickerDialog.OnDateSetListener datePickerListener = new DatePickerDialog.OnDateSetListener() {

@Override

public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {

}

};

Calendar c = Calendar.getInstance();

int mYear = c.get(Calendar.YEAR);

int mMonth = c.get(Calendar.MONTH);

int mDay = c.get(Calendar.DAY_OF_MONTH);

final DatePickerDialog datePickerDialog = new DatePickerDialog(

Main23Activity.this, datePickerListener,

mYear, mMonth, mDay);

DatePicker datePicker = datePickerDialog.getDatePicker();

c.add(Calendar.MONTH, +1);

long oneMonthAhead = c.getTimeInMillis();

datePicker.setMaxDate(oneMonthAhead);

datePicker.setMinDate(System.currentTimeMillis() - 1000);

datePickerDialog.show();

}

});

btnTime.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

TimePickerDialog.OnTimeSetListener timePickerListener = new TimePickerDialog.OnTimeSetListener() {

@Override

public void onTimeSet(TimePicker view, int hour, int minute) {

}

};

Calendar c = Calendar.getInstance();

final TimePickerDialog timePickerDialog = new TimePickerDialog(Main23Activity.this,timePickerListener,

c.get(Calendar.HOUR_OF_DAY),c.get(Calendar.MINUTE)+5,false);

timePickerDialog.show();

}

});

但是,您需要检查用户是否选择了今天的日期,并且时间是否小于当前时间条件。

以上是 日期选择器和时间选择器-设置最大值和最小值 的全部内容, 来源链接: utcz.com/qa/429930.html

回到顶部