如何在日期选择器对话框中设置日期限制

2023-11-24

我想对日期进行限制,以便用户不能选择更多的日期,例如,如果今天是 1 月 1 日,那么用户不应选择超过 7 个日期,我的意思是他不能选择 1 月 9 日。我还希望他不要选择月份和年份。所以我限制他在一周内完成任务。

到目前为止我所做的是显示日期选择器片段并在其中设置当前日期。我的主要活动中的代码如下所示:

etSelectDate.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                DialogFragment datePickerFragment = new DatePickerFragment() {
                    @Override
                    public void onDateSet(DatePicker view, int year, int month, int day) {
                        Log.d("Date Change", "onDateSet");
                        Calendar c = Calendar.getInstance();
                        c.set(year, month, day);
                        DateFormat df = DateFormat.getDateInstance();
                        etSelectDate.setText(df.format(c.getTime()));
                        //nextField.requestFocus(); //moves the focus to something else after dialog is closed

                    }
                };
                datePickerFragment.show(MainActivity.this.getSupportFragmentManager(), "datePicker");

            }
        });

日期选择器片段类如下所示:

 public static class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener{

        @Override
        public Dialog onCreateDialog(Bundle savedInstanceState) {
            // Use the current date as the default date in the picker
            final Calendar c = Calendar.getInstance();
            int year = c.get(Calendar.YEAR);
            int month = c.get(Calendar.MONTH);
            int day = c.get(Calendar.DAY_OF_MONTH);

            // Create a new instance of DatePickerDialog and return it
            return new DatePickerDialog(getActivity(), this, year, month, day);
        }

        @Override
        public void onDateSet(DatePicker view, int year, int month, int day) {
            //blah
        }
    }

直到那时它工作正常,但我不知道如何限制日期,其余月份和年份应该是不可选择的。我看过很多链接,例如this,但我不明白我该怎么做,而且 android 网站上也没有任何帮助。

所以请帮助我,我怎样才能只限制7天

Update

通过您的回复,我知道如何在日历中设置最大日期,所以由于我想将最大日期设置为当前日期前 7 天,但我仍然没有得到它。到目前为止我读到的方法是:

pickerDialog.getDatePicker().setMaxDate(new Date().getTime());

它将当前日期设置为最大值,但是由于它是 Date 对象,因此如何在其中添加提前 7 天的日期?请帮忙


你有setMinDate(long) and setMaxDate(long)您可以使用的方法。这两者都适用于 API 级别 11 及更高版本。由于您正在使用DatePickerDialog,您需要首先通过调用获取底层DatePickergetDatePicker() method.

dpdialog.getDatePicker().setMinDate(minDate);  
dpdialog.getDatePicker().setmaxDate(maxDate);  

Source :在 Android 中设置 DatePickerDialog 的限制?

您可以使用以下方法计算 minDate:

Date today = new Date();
Calendar c = Calendar.getInstance();
c.setTime(today);
c.add( Calendar.MONTH, -6 ) // Subtract 6 months
long minDate = c.getTime().getTime() // Twice!  

更新 :

替换下面的行

return new DatePickerDialog(getActivity(), this, year, month, day);

with

 // Create a new instance of DatePickerDialog and return it
    DatePickerDialog pickerDialog = new DatePickerDialog(getActivity(), this, year, month, day);
    pickerDialog.getDatePicker().setMaxDate(maxDate);
    pickerDialog.getDatePicker().setMinDate(minDate);
    return pickerDialog;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在日期选择器对话框中设置日期限制 的相关文章

  • 如何对这个字符串进行子串化

    我想得到这个字符串的 4 个部分 String string 10 trillion 896 billion 45 million 56873 我需要的4个部分是 10万亿 8960亿 4500万 和 56873 我所做的是删除所有空格 然
  • 如何在 Android 中保存相机的临时照片?

    在尝试从相机拍照并将其保存到应用程序的缓存文件夹中时 我没有得到任何可见的结果 应用程序不会崩溃 但在 LogCat 上 当我尝试将 ImageView src 字段设置为刚刚获取的文件的 URI 时 我收到此消息 09 17 14 03
  • Android Studio 3.0 Canary 9 - 无法解析包

    我在 Android Studio 3 0 Canary 9 中遇到几个错误 这些错误是 无法解析 android 软件包 下面列出了一些错误 我刚刚安装了 SDK 的所有额外软件包 但仍然收到 gradle 构建错误 Error 82 1
  • Android - 从资产中解析巨大(超大)JSON 文件的最佳方法

    我正在尝试从资产文件夹中解析一些巨大的 JSON 文件 我如何加载并添加到 RecyclerView 我想知道解析这种大文件 大约 6MB 的最佳方法是什么 以及您是否知道可以帮助我处理此文件的良好 API 我建议您使用GSON lib h
  • 卸载后 Web 应用程序不显示“添加到主屏幕”

    这是我第一次创建网络应用程序 我设法解决了这个问题 所以我得到了实际的 chrome 提示 将其添加到主屏幕 然后我从手机上卸载了该网络应用程序 因为我想将其展示给我的同事 但是 屏幕上不再出现提示 问题 这是有意为之的行为还是我的应用程序
  • SearchView过滤ListView

    我已经实现了搜索视图来过滤我的列表视图项目 当我输入任何文本时 它会过滤列表 但当我退出搜索视图时 它不会返回原始列表项 public class PlacesListAdapter extends ArrayAdapter
  • Android 30+ 中的视频捕获意图 - 只有所有者才能与待处理项目交互

    我正在尝试在我的应用程序上捕获视频 它可以在 android API 30 以下运行 但不能在 30 以上运行 似乎在 sdk 30 之后 android 不允许完全读取外部存储 作用域存储 我目前遇到这个错误 java lang Ille
  • java.lang.NoClassDefFoundError:org.apache.batik.dom.svg.SVGDOMImplementation

    我在链接到我的 Android LibGDX 项目的 Apache Batik 库时遇到了奇怪的问题 但让我们从头开始 在 IntelliJ Idea 中我有一个项目 其中包含三个模块 Main Android 和 Desktop 我强调的
  • 当文本输入聚焦在 React Native for Android 的底部工作表上时,视图移出屏幕

    我正在使用图书馆 https github com osdnk react native reanimated bottom sheet https github com osdnk react native reanimated bott
  • Adobe 是否为其 PDF 阅读器提供 Android SDK 或 API? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我希望能够在我们的应用程序内的视图中显示本地 PDF 文件 在 Android 4 03 下的平板电脑上运行 目前 我们将 Adob eR
  • CollapsingToolBarLayout - 状态栏稀松布颜色不改变

    几天前我更新了我的 android studio 并开始使用 CoordinatorLayout 和 CollapsingToolbarLayout 只是尝试一些东西 工具栏稀松布颜色似乎覆盖了状态栏初始颜色和状态栏稀松布颜色 从 xml
  • 使用 Android 发送 HTTP Post 请求

    我一直在尝试从 SO 和其他网站上的大量示例中学习 但我无法弄清楚为什么我编写的示例不起作用 我正在构建一个小型概念验证应用程序 它可以识别语音并将其 文本 作为 POST 请求发送到 node js 服务器 我已确认语音识别有效 并且服务
  • 无法访问 com.google.android.gms.internal.zzbfm 的 zzbfm 类文件未找到

    我正在将我的 Android 应用程序项目从GCM to FCM 为此 我使用 Android Studio 中的 Firebase 助手工具 并遵循 Google 开发人员指南中的说明 一切都很顺利 并将我的应用程序代码更改为FCM根据助
  • 在gradle插件中获取应用程序变体的包名称

    我正在构建一个 gradle 插件 为每个应用程序变体添加一个新任务 此新任务需要应用程序变体的包名称 这是我当前的代码 它停止使用最新版本的 android gradle 插件 private String getPackageName
  • Ubuntu 16.04 - Genymotion:找不到 /dev/hw_random

    I install Genymotion on the Ubuntu 16 04 64Bit I created a virtual emulator for Android 6 0 then I run this emulator but
  • Android访问远程SQL数据库

    我可以直接从 Android 程序访问远程 SQL 数据库 在网络服务器上 吗 即简单地打开包含所有必需参数的连接 然后执行 SQL 查询 这是一个私人程序 不对公众开放 仅在指定的手机上可用 因此我不担心第三方获得数据库访问权限 如果是这
  • Android 套接字和 asynctask

    我即将开始制作一个应该充当 tcp 聊天客户端的应用程序 我一直在阅读和阅读 我得出的结论是最好 如果不需要 将我的套接字和异步任务中的阅读器 问题是我不确定从哪里开始 因为我是 Android 新手 这至少对我来说是一项艰巨的任务 但据我
  • 如何在Xamarin中删除ViewTreeObserver?

    假设我需要获取并设置视图的高度 在 Android 中 众所周知 只有在绘制视图之后才能获取视图高度 如果您使用 Java 有很多答案 最著名的方法之一如下 取自这个答案 https stackoverflow com a 24035591
  • 将 Intent 包装在 LabeledIntent 中以用于显示目的

    要求 我的应用程序中有一个 共享 按钮 我需要通过 Facebook 分享 我需要选择是否安装原生 Facebook 应用程序 我们的决定是 如果未安装该应用程序 则将用户发送到 facebook com 进行分享 当前状态 我可以检测何时
  • android sdk 的位置尚未在 Windows 操作系统的首选项中设置

    在 Eclipse 上 我转到 windows gt Android SDK 和 AVD Manager 然后弹出此消息 Android sdk 的位置尚未在首选项中设置 进入首选项 在侧边栏找到 Android 然后会出现一个 SDK 位

随机推荐

  • 使用一个代码库为非 Retina 和 Retina 显示器提供服务:用于在 iPhone 或 iOS 设备上缩放 HTML5 应用程序的布局和资源的框架?

    我们的目标是模拟开发人员可以使用本机 iOS 应用程序执行的操作 即使用基于单位的单一布局来适应 Retina 显示屏 640x960 和非 Retina 显示屏 320x480 所有 iOS 开发人员需要做的就是提供两组资源 一组用于 R
  • java ArrayList 的时间复杂度

    Is ArrayListjava中的数组还是列表 get 操作的时间复杂度是多少 O n or O 1 An ArrayList在Java中是一个List这是由一个支持array The get index 方法是恒定时间 O 1 手术 直
  • 无法访问 URL:HTTP/1.1 400 错误 URI

    我想通过 Composer 创建一个新的 Laravel 项目 但出现此错误 Composer Downloader TransportException The http packagist org p fideloper proxy 2
  • greendao 字符串主键 - 如何使用

    在 greendao 常见问题解答中 它说 从 greenDAO 开始 对字符串主键的支持有限 http greendao orm com documentation technical faq 我找不到任何地方说明如何执行此操作 我使用
  • foreach 块缺少结束符“}”

    我今天玩 Razor 很开心 你能看出这个观点有什么问题并解释为什么它是错误的吗 foreach var item in Model if item ID PreviousOrderId div class orderdetail div
  • 当没有更多工作要做时,防止 boost::asio::io_context 返回

    boost asio io context run 当没有待处理的工作时确实返回 我想避免这种行为 以便run 确实无限期地等待新作品 并且可以从另一个线程停止它 我想 这可以通过在io context 并通过调用cancel 当我们想要的
  • 如何为特定类型的所有实例实现我自己的自定义属性编辑器?

    我已经遵循了一些关于创建自定义属性编辑器对话框的教程 但是涉及的事情太多 我无法让它正常工作 我想要完成的是一个带有日期选择器 日历 时间选择器以及 确定 和 取消 按钮的自定义表单 该表单完全没有问题 但是我将如何实现它 以便我可以通过启
  • 解开嵌入式资源的困惑

    编辑 阅读 Tim Schmelter 的答案 1 然后使用此问题作为如何嵌入资源并在运行时访问它们的示例 嵌入式资源的主题经常出现 尤其是当人们询问如何在运行时访问嵌入式文件时 事情变得更加混乱 因为 Visual Studio 为您提供
  • 在 C++ 中打开并显示图像?

    基本上我正在自学 C 程序功能的一部分是打开和关闭指定的图像 我该怎么做呢 或者我会使用什么资源 Thanks 在 C 中 无需任何额外的库 您可以打开图像 但除了一堆二进制数据之外 不会有什么特别有用的东西 那么你必须使用你自己的解码器
  • 分散数组中的重复项

    来源 谷歌面试问题 编写一个例程以确保输入中的相同元素在输出中最大程度地分布 基本上 我们需要放置相同的元素 以这样的方式TOTAL传播是尽可能最大的 Example Input 1 1 2 3 2 3 Possible Output 1
  • Linq 列表中的部分匹配?

    我有一个需要在表中匹配的部分字符串列表 我正在使用谓词构建器 var predicate PredicateBuilder False
  • Mac 上的 RStudio Python 版本更改

    我的问题是 如何将 python 版本更改为 anaconda 3 5 并可以在 RStudio 中使用 anaconda 中安装的模块 我正在使用 RStudio 版本 0 99 891R版本3 2 3 2015 12 10 平台 x86
  • 保存文件时出现权限错误(沙箱)

    我正在尝试将文件保存到沙盒应用程序 OS X 中的路径 但到目前为止 几乎每次尝试保存时都会遇到错误 错误是 Error saving Error Domain NSCocoaErrorDomain Code 513 You don t h
  • 为 iOS Metal 中 MTLBuffer 使用的数据分配内存

    作为后续问题这个答案 我正在尝试用 Metal 中的内核函数替换 CPU 上运行的 for 循环 以并行化计算并提高性能 我的函数基本上是一个卷积 由于我反复收到输入数组值的新数据 数据源于AVCaptureSession 似乎使用newB
  • Java Comparator 给出要比较的属性的名称

    我的问题是这样的 我必须订购一个数据表 表的每一行都是一个存储在 List 中的对象 我们称之为 TableObject 每列数据都是该类的一个属性 通常是字符串 当用户单击任何列时 我必须执行典型的数据排序 所以我考虑将 List 更改为
  • gdb如何显示线程名称

    我的应用程序中创建了许多线程 当我执行命令 infothreads 时 一些线程名称在 gdb 中可见 而其他线程名称则不显示 如何获取所有线程名称本身而不是像 0xb7fe1424 这样的十六进制值 4 Thread 0xb68ffb70
  • 在 Open XML SDK 中的单词书签后插入 OpenXmlElement

    我可以使用以下代码访问我的Word文档中的书签 var res from bm in mainPart Document Body Descendants
  • 如何复制 FTP 服务器上的文件?

    如何复制 FTP 服务器上的文件 我的目标是复制ftp www mysite com test jpg to ftp www mysite com testcopy jpg 要重命名文件 我会使用 var request FtpWebReq
  • 导航栏 rightbaritem 图像按钮错误 iOS 11

    这段代码在ios10上运行正常 我得到了我的标签和一个图像按钮 这是用户照片个人资料 圆形 好的 但是当运行 xcode 9 ios11 模拟器时 我发现它被拉伸了 按钮框架必须是 32x32 当检查 sim 并获取视图并告诉 xcode
  • 如何在日期选择器对话框中设置日期限制

    我想对日期进行限制 以便用户不能选择更多的日期 例如 如果今天是 1 月 1 日 那么用户不应选择超过 7 个日期 我的意思是他不能选择 1 月 9 日 我还希望他不要选择月份和年份 所以我限制他在一周内完成任务 到目前为止我所做的是显示日