如何限制android中edittext的输入时间

2023-11-21

我必须允许用户在动态编辑文本中仅输入 ##:## 格式的时间,有什么方法可以实现吗?我使用了下面的代码,但它不起作用。

我可以输入超过 24 个值的数字,例如 45623:5689。

edit.setInputType(InputType.TYPE_DATETIME_VARIATION_TIME)

Even android:text="time"也不工作。

我怎样才能实现这个目标。任何人都可以建议我如何做这件事。

我想允许用户在前 2 个位置输入最多 23 个值,然后输入强制:然后用户最多可以允许 59 个值。

例如

23:59 correct
24:05 incorrect
02:56 correct
02:79 incorrect

我也使用了这个自定义过滤器,但它不起作用

我从 SO 的其他地方得到了这个代码。

Code:

    InputFilter timeFilter = new InputFilter() {
        public CharSequence filter(CharSequence source, int start, int end, Spanned dest,
                int dstart, int dend) {
            if (source.length() == 0) {
                return null;// deleting, keep original editing
            }
            String result = "";
            result += dest.toString().substring(0, dstart);
            result += source.toString().substring(start, end);
            result += dest.toString().substring(dend, dest.length());

            if (result.length() > 5) {
                return "";// do not allow this edit
            }
            boolean allowEdit = true;
            char c;
            if (result.length() > 0) {
                c = result.charAt(0);
                allowEdit &= (c >= '0' && c <= '2');
            }
            if (result.length() > 1) {
                c = result.charAt(1);
                allowEdit &= (c >= '0' && c <= '9');
            }
            if (result.length() > 2) {
                c = result.charAt(2);
                allowEdit &= (c == ':');
            }
            if (result.length() > 3) {
                c = result.charAt(3);
                allowEdit &= (c >= '0' && c <= '5');
            }
            if (result.length() > 4) {
                c = result.charAt(4);
                allowEdit &= (c >= '0' && c <= '9');
            }
            return allowEdit ? null : "";
        }
    };

编辑的问题:main.xml 文件代码

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="center"
    android:orientation="vertical"
    android:padding="10dp" >

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="5dp"
        android:gravity="center"
        android:orientation="horizontal" >

        <TextView
            android:id="@+id/txtRecipientName"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingRight="20dp"
            android:text="@string/recipient_name" />

        <EditText
            android:id="@+id/edTxtRecipient"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:ems="10"
            android:paddingLeft="20dp" >

            <requestFocus />
        </EditText>
    </LinearLayout>

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="5dp"
        android:gravity="center"
        android:orientation="horizontal" >

        <TextView
            android:id="@+id/txtParcelDeliverTime"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingRight="20dp"
            android:text="@string/delivered_time" />

        <EditText
            android:id="@+id/edTxtParcelDeliverTime"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:ems="10"
            android:paddingLeft="20dp" >
        </EditText>
    </LinearLayout>

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="5dp"
        android:gravity="center"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/btnRecipient_OK"
            android:layout_width="100dp"
            android:layout_height="wrap_content"
            android:text="@android:string/ok" />
    </LinearLayout>

</LinearLayout>

该代码正在工作,但是如果我插入第一个字母并插入正确的值,那么它就不起作用,因为source包含其先前的字符值。


尝试将字符转换为整数,然后测试它们是否大于 24 和 60。

int a = ((int) result.charAt(0)) - 48;
int b = ((int) result.charAt(1)) - 48;
int c = ((int) result.charAt(3)) - 48;
if(a < 0 || b < 0 || c < 0) {
    Not right.
}

if((a > 2 || (a == 2 && b > 3)) || c > 59) {
    Neither is this.
}

负 48 因为数字 0 在 ascii 表中是第 48 位。测试必须是ascii。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何限制android中edittext的输入时间 的相关文章

随机推荐

  • 在 xcode 4.6 中从命令行设置 #define

    我试图在使用 xcodebuild 进行命令行构建时设置 define 宏 但没有运气 我试过了 DMYMACRO 1 and MYMACRO 1我能想到的一切都不起作用 如何从命令行设置 define Roger 您正在寻找的是一种通过命
  • RSA 加密然后解密失败,并显示“oaep 解码错误”

    我正在尝试调试一个简单的 openssl 程序 但无法完全理解 openssl 的 oaep 解码错误 含义 我已将我的程序简化为这个 测试 一个 include
  • 当 isNameSpaceAware 和 isValidating 为“true”时,XPath 对“Node”返回 null

    当我尝试解析 XML 文件时 我得到一个空节点 XPath xPath XPathFactory newInstance newXPath Node node null try node Node xPath evaluate mynode
  • 是否有任何原生 PHP 函数会抛出内置异常?

    回答的同时PHP rename 不会在错误时抛出异常我想知道是否有任何本地 PHP 函数会抛出内置的例外 旁边SPL stuff PDO 可以配置为抛出异常
  • 添加到 HTML 表单而不丢失 Javascript 中当前表单输入信息

    我有一个下拉菜单 它根据所选的选择构建一个表单 因此 如果有人选择 foobar 它会显示一个文本字段 如果他们选择 cheese 它会显示单选按钮 然后 用户可以在这些表单中输入数据 唯一的问题是 当他们添加新的表单元素时 所有其余信息都
  • struct.error:所需参数不是整数

    我有以下 python 代码 velocity 0 rotation 0 vr velocity rotation 2 vl velocity rotation 2 cmd struct pack gt Bhh 145 vr vl 我正在处
  • 如何限制对 ASP.net MVC 控制器中某些操作的访问

    我是 ASP net MVC 的新手 并使用它创建了我的第一个 Web 应用程序 在我的应用程序中 我使用数据库身份验证 我在控制器中创建了登录操作 该操作检查输入的用户名和密码是否存在于数据库中 如果存在 则将所需的值放入会话中 并根据用
  • 使用用户帐户凭据访问私有 Cloud Run/Cloud Functions

    这是我的用例 我已经以私有模式部署了 Cloud Run 服务 与云功能相同的问题 我正在开发一项使用此 Cloud Run 的新服务 我使用应用程序中的默认凭据进行身份验证 它适用于 Compute Engine 和 Cloud Run
  • android挂起意图通知问题

    我的应用程序中有一个警报 它会启动一个通知 然后在按下时启动一个活动 问题是 当我创建多个警报时 从通知启动的活动将获得与第一个警报相同的额外内容 我认为问题要么在于我放入待决意图中的意图 要么在于待决意图本身 我想我可能需要在其中一个上挂
  • 如何在 OS X Yosemite 上的 Apache 2.4 中安装 mod_perl 2.0.9?

    随着 OS X 10 10 Yosemite 的发布 Apple 将其 Apache 服务器升级到了 2 4 版本 发布时 mod perl 2 0 8 与 Apache 2 4 不兼容 mod perl 2 0 9 尚未正式发布 更多信息
  • 模拟本地主机上的慢速互联网连接

    我使用 c asp net 和 iis 我想在我的电脑上模拟慢速互联网连接来测试我的应用程序 我可以控制iis的带宽吗 请不要建议 System Threading Thread Sleep someDuration 在 c 文件中 您可以
  • Android 图像捕捉时内存不足

    我有一个拍摄照片的活动 具有全部可能的分辨率 因此相当大 应用程序有机会分析它们 一次仅处理一张照片 问题是我在拍了 4 5 张照片后遇到了 内存不足 的情况 我懂了 dalvikvm heap 5070745 字节分配内存不足 字节大小不
  • 如何使用 Float(在打印样式表中)修复此打印布局?

    我有一个页面 其中包含网格格式的多个图表 如下所示 每个图表都显示在一个包装中float left图表所在的 div 有overflow auto 这给出了将图表包裹到屏幕宽度的所需布局 我遇到的问题是 在打印模式下 这只打印一页并丢失其余
  • TableView 就像 iPhone 中的通讯录应用程序

    嘿 我正在开发一个联系人应用程序 我想要具有相同类型的 Tableview 和添加按钮 因此 当用户添加新联系人时 它将打开一个新视图 其中包含标准按钮和文本字段等 如何使应用程序向每个新视图添加相同的功能 我希望这是有道理的 先感谢您 这
  • 包括 javascript 到 google 网站

    我试图在 Google 协作平台中包含一个简单的 javascript 但按下按钮时我什么也没得到 我将代码放入 HTML 框中 该代码在本地测试时完美运行 这是我的代码
  • 如何使用 ArrayList 正确实现 Parcelable?

    我在上课时遇到困难Parcelable 问题是 我正在尝试向包裹中的一个成员写信 该成员是ArrayList
  • 与R语言匹配以获得位置

    我使用 match 来获取元素是否在列表中 例如我的清单是 c a b h e and so on 如果我想查看元素 h 是否在列表中 我可以这样使用 match if h in v do something 如何获取列表中找到元素的位置
  • Firestore 安全规则:仅当新文档 ID 与用户 ID 相同时才允许用户创建文档

    当用户第一次登录时 我还需要调用一个函数 在我的 firestore 用户集合中创建一个文档来存储他们的个人资料数据 使用Web SDK 我之前使用带有 firebase 函数的新用户触发事件 但等待冷函数启动的速度太慢 安全规则要求 需要
  • Haskell:模块导入带来不必要的二进制增长

    当我通过以下方式之一将 大 模块导入主模块时 import Mymodule import qualified Mymodule as M import Mymodule MyDatatype 与我不导入该模块时相比 编译后的二进制文件增长
  • 如何限制android中edittext的输入时间

    我必须允许用户在动态编辑文本中仅输入 格式的时间 有什么方法可以实现吗 我使用了下面的代码 但它不起作用 我可以输入超过 24 个值的数字 例如 45623 5689 edit setInputType InputType TYPE DAT