Android:日期选择器不应接受当前日期和未来日期

发布于 2024-11-30 16:27:59 字数 62 浏览 0 评论 0原文

如何限制日期选择器接受 Android 中的当前和未来日期我正在使用 google api...任何想法..?

How to restrict date picker from accepting current and future dates in android i am using google api...any idea..?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

谜兔 2024-12-07 16:27:59
  1. 从 API 级别 11 开始,有一种方法可以实现这一点:

    DatePicker.setMaxDate(long maxDate)
    
  2. 如果它必须在以前的版本中工作,请使用此方法:

    public void init(intyear,intmonthOfYear,intdayOfMonth,DatePicker.OnDateChangedListener onDateChangedListener)
    

您可以传递自己的 OnDateChangedListener ,它将无效日期“重置”为最新的有效日期:

DatePicker picker = ...
int year = ...
int monthOfYear = ...
int dayOfMonth = ...
picker.init(year, monthOfYear, dayOfMonth, new DatePicker.OnDateChangedListener() {

    @Override
    public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
        // check if current date is OK
        boolean dateOk = ...
        if (!dateOk) {
            // correct the date, but be sure the corrected date is OK
            // => otherwise you might get endless recursion
            year = ...
            monthOfYear = ...
            dayOfMonth = ...
            // update the date widget with the corrected date values
            view.updateDate(year, monthOfYear, dayOfMonth);
        }
    }
});
  1. Since API level 11 there is a method for that:

    DatePicker.setMaxDate(long maxDate)
    
  2. If it has to work in previous versions, use this method:

    public void init(int year, int monthOfYear, int dayOfMonth, DatePicker.OnDateChangedListener onDateChangedListener)
    

You could pass your own OnDateChangedListener which "resets" invalid dates to the newest valid one:

DatePicker picker = ...
int year = ...
int monthOfYear = ...
int dayOfMonth = ...
picker.init(year, monthOfYear, dayOfMonth, new DatePicker.OnDateChangedListener() {

    @Override
    public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
        // check if current date is OK
        boolean dateOk = ...
        if (!dateOk) {
            // correct the date, but be sure the corrected date is OK
            // => otherwise you might get endless recursion
            year = ...
            monthOfYear = ...
            dayOfMonth = ...
            // update the date widget with the corrected date values
            view.updateDate(year, monthOfYear, dayOfMonth);
        }
    }
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文