我在android中使用datePicker來顯示基於用戶選擇日期的圖像。我需要將上述日期限制在某些日期,例如2010年1月1日至2010年12月31日。簡單,因爲我認爲但沒有我在哪裏可以找到如何限制這些日期的答案。設置android datepicker日期限制
有誰知道如何限制日期爲Android的DatePicker
我在android中使用datePicker來顯示基於用戶選擇日期的圖像。我需要將上述日期限制在某些日期,例如2010年1月1日至2010年12月31日。簡單,因爲我認爲但沒有我在哪裏可以找到如何限制這些日期的答案。設置android datepicker日期限制
有誰知道如何限制日期爲Android的DatePicker
我想你必須實現自己的DatePicker
。這背後的邏輯是:「只有少數開發者會限制DatePicker
,所以他們必須實現自己的功能。」
回答可能太遲了,但很容易將min
和max
的日期設置爲DatePickerDialog
。 適用於所有Android版本。只要你需要返回DatePickerDialog
基於Android版本
protected Dialog onCreateDialog(int id)
{
switch (id)
{
case DATE_DIALOG_ID:
DatePickerDialog dialog = null;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB)
{
dialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener()
{
@Override
public void onDateSet(DatePicker view, int selectedYear, int selectedMonth, int selectedDate)
{
mTextView.setText(selectedDate + "/" + selectedMonth + 1 + "/" + selectedYear);
}
}, year, month - 1, date);
Calendar currentDate = Calendar.getInstance();
dialog.getDatePicker().setMaxDate(currentDate.getTimeInMillis());
//If you need you can set min date too
}
else
{
dialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener()
{
@Override
public void onDateSet(DatePicker view, int selectedYear, int selectedMonth, int selectedDate)
{
mTextView.setText(selectedDate + "/" + selectedMonth + 1 + "/" + selectedYear);
}
}, year, month - 1, date)
{
@Override
public void onDateChanged(DatePicker view, int year, int month, int day)
{
if (year <= maxYear && month + 1 <= maxMonth && date <= maxDate) //meets your criteria
{
view.updateDate(year, month, date); //update the date picker to selected date
}
else
{
view.updateDate(maxYear, maxMonth - 1, maxDate); // or you update the date picker to previously selected date
}
}
};
}
return dialog;
}
return null;
}
爲什麼你不應該customoption設計新的佈局類似的DatePicker。你可以使用Spinners和Forloops。
您可以只設置:
dateDialog.getDatePicker().setMaxDate(new Date().getTime());
和
dateDialog.getDatePicker().setMinDate(new Date().getTime());
其中dateDialog是
new DatePickerDialog()
和參數類型爲MAXDATE設置和爲MinDate是long
只適用於比Android 11更晚的版本。 – 2015-04-04 04:52:47
for api <11試試這個http://stackoverflow.com /一個/3758898分之32943731 – 2015-10-05 07:57:20
U可以通過鍵入簡單的線條實現這一
mDatePicker.getDatePicker().setMinDate(System.currentTimeMillis());
mcurrentDate.add(Calendar.MONTH,6);
mDatePicker.getDatePicker().setMaxDate(mcurrentDate.getTimeInMillis());
我設法編程設定的最小,最大可選的日期,及還設置了DatePicker的查看當前(默認)日期:http://stackoverflow.com/問題/ 6421874 /如何獲取date-set-in-date-date-date-set-in-date-date-date-set-in-android/7961268#7961268 – 2011-11-02 14:39:06