Android EditText 结合InputFilter vs TextWatcher

2024-02-26

基本上我想了解更深入的差异和使用场景InputFilter and TextWatcher.

根据文档:
InputFilter:输入过滤器可以附加到可编辑项以限制可以对其进行的更改。

TextWatcher:当某个类型的对象附加到可编辑对象时,当文本更改时将调用其方法。因此,如果我错了,它可以用来约束更改纠正我

哪一个更好?为什么?我的情况是我需要一个小数点后至少有 6 个字符的 EditText。


TextWatcher用于在用户键入时收到通知。
InputFilter决定可以输入什么内容。

例如,
假设我想让用户输入温度。该温度必须全部是数字,并且只能包含小数点后两位数字。如果你仔细看,我两个都需要TextWatcher and InputFilter.

InputFilter只允许数字。

final InputFilter[] filters = new InputFilter[]
                { DigitsKeyListener.getInstance(true, true) };
textView.setFilters(filters);   

现在,这将允许小数点后两位以上的数字。为什么?因为InputFilter只限制可以输入的键。这是当TextWatcher进来。

@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
    // you need this to avoid loops
    // or your stack will overflow
    if(!textView.hasWindowFocus() || textView.hasFocus() || s == null){
        return;
    }
    // Now you can do some regex magic here to see 
    // if the user has entered a valid string
    // "\\d+.\\d{6,}" for your case

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

Android EditText 结合InputFilter vs TextWatcher 的相关文章

  • Android 上的 Firebase:如何检查 Firebase 身份验证失败原因?

    我在 Android 上使用 Firebase 和 Firebase Auth 功能 I try FirebaseAuth signInWithEmailAndPassword如果失败 我想知道为什么登录过程失败 The signInWit
  • Pandas hub_table 更快的替代品

    我正在使用熊猫pivot table在大型数据集 1000 万行 6 列 上运行 由于执行时间至关重要 因此我尝试加快流程 目前 处理整个数据集大约需要 8 秒 这太慢了 我希望找到替代方案来提高速度 性能 我当前的 Pandas 数据透视
  • 如何将 EditText 传递给另一个活动?

    Intent intent new Intent this Name class intent putExtra key et getText toString startActivity intent Intent intent getI
  • Android Lollipop prepareAsync() 需要很长时间才能返回

    在 Samsung Galaxy Note 4 上的 Android Lollipop 几周前刚刚从 4 4 4 更新 上 prepareAsync 几乎需要 20 秒来加载实时流 在 4 4 4 上 只需要 2 3 秒 并且没有错误 见下
  • 如何最大限度地提高服务器性能?

    我一直在努力了解性能和可扩展性 并想知道开发人员 系统管理员正在做什么来提高他们的系统的效率 为了标准化答案 如果您能尽力回答以下任一问题 将会有所帮助 Profile Magazine publication on Joomla Jobs
  • 使用 Android 播放任意音调

    有没有办法让Android发出任意频率的声音 意思是 我不想预先录制声音文件 我环顾四周 音调发生器 http developer android com reference android media ToneGenerator html
  • SQLite支持android的数据类型有哪些

    谁能告诉我 SQLITE 中支持 ANDROID 的数据类型列表 我想确认 TIME 和 DATE 数据类型 这里有一个list http www sqlite org datatype3 htmlSQLite 的数据类型 支持时间和日期间
  • 获取可以共享数据的应用程序列表

    此代码显示默认共享对话框 Intent sharingIntent new Intent Intent ACTION SEND sharingIntent setType text html sharingIntent putExtra a
  • Integer.parseInt("0x1F60A") 以 NumberformatException 结束

    我尝试从数据库中获取长字符串内的表情符号代码 格式如下 0x1F60A 所以我可以访问代码 但它将是String 起初 我尝试通过执行以下操作来转换变量tv setText beforeEmo getEmijoByUnicode int e
  • 加快 ImageView 中的缩放功能

    我目前正在处理非常大的图像 7 10mb 由于多种原因无法调整大小或压缩 现在 我们的想法是在自定义 ImageView 中显示它们 使用户能够进行双击缩放 捏合缩放等 我使用这个库来完成这项工作 https github com Mike
  • 如何从 Facebook 邀请好友到 Android 应用程序? - 给出错误

    我正在开发一个 Android 应用程序 我正在努力将 邀请朋友 功能添加到我的应用程序中 它转到我的AppLinkUrl成功但显示错误 我的清单代码如下
  • 不显示 WRITE_EXTERNAL_STORAGE 的权限对话框

    I want to download a file using DownloadManager And DownloadManager wants to WRITE EXTERNAL STORAGE permission I have in
  • 红宝石接球和效率

    catch在 Ruby 中意味着跳出深度嵌套的代码 在 Java 中 例如用Java也可以达到同样的效果try catch用于处理异常 但它被认为是糟糕的解决方案 而且效率非常低 在 Ruby 中 我们有处理异常的方法begin raise
  • Android:打开和关闭SQLite数据库

    我正在开发Android应用程序 我经常在其中访问本地数据库 该数据库可以从不同的主题访问 因此我遇到了数据库的协调问题 我使用以下open and close method public void open mDb mDbHelper g
  • 如何用 kevent() 替换 select() 以获得更高的性能?

    来自Kqueue 维基百科页面 http en wikipedia org wiki Kqueue Kqueue 在内核和用户空间之间提供高效的输入和输出事件管道 因此 可以修改事件过滤器以及接收待处理事件 同时每次主事件循环迭代仅使用对
  • 在 C 中复制两个相邻字节的最快方法是什么?

    好吧 让我们从最明显的解决方案开始 memcpy Ptr const char a b 2 调用库函数的开销相当大 编译器有时不会优化它 我不会依赖编译器优化 但即使 GCC 很聪明 如果我将程序移植到带有垃圾编译器的更奇特的平台上 我也不
  • python 日志记录会刷新每个日志吗?

    当我使用标准模块将日志写入文件时logging 每个日志会分别刷新到磁盘吗 例如 下面的代码会将日志刷新 10 次吗 logging basicConfig level logging DEBUG filename debug log fo
  • putFragment() - 片段 x 当前不在 FragmentManager 中

    上面的标题被问了很多次 但答案似乎与FragmentStatePagerAdapter这与我的问题无关 我正在使用该方法putFragment Bundle String Fragment 直接地 The 安卓文档 http develop
  • 异步更新后更新Android Listview

    我正在将 HTTP 调用从同步调用转换为异步调用 由于连接在后台运行 因此当我最初设置列表适配器时 数据不存在 如何在 HTTP 调用后更新列表适配器 我尝试了一些方法 例如在数据发送回之前不设置适配器并再次设置适配器 但没有任何效果 这是
  • 文件修改时间检查的成本

    对于Linux下包含少量字节的文件 我只需要处理自上次处理以来发生更改的时间 我通过调用 PHP 检查文件是否被更改clearstatcache filemtime 定期 由于整个文件总是很小 因此删除对 filemtime 的调用并通过将

随机推荐

  • Tomcat 上下文管理

    tomcat 6 0 文档位于http tomcat apache org tomcat 6 0 doc config context html http tomcat apache org tomcat 6 0 doc config co
  • 通过反射调用 getter 的最佳方式

    我需要获取具有特定注释的字段的值 因此通过反射我能够获取此字段对象 问题是这个字段将始终是私有的 尽管我事先知道它总是有一个 getter 方法 我知道我可以使用 setAccesible true 并获取它的值 当没有 Permissio
  • Yii 不是自动的,包括 jquery

    我在使用 Yii 和 Jquery 时遇到一个奇怪的问题 当我在本地主机上打开一个使用 ajax jquery 的页面时 Yii 会自动添加对页面的资产包含调用 但是 当我在服务器上运行相同的代码时 Yii 不会执行此
  • Django 以 10 为基数的 int() 的文字无效

    我正在 Django 中创建一个简单的搜索结果页面 用户通过文本搜索并从下拉列表中添加城市字段 查询如下 if query in request GET and request GET query city request GET city
  • 如何在椭圆形边框内设置圆形图标元素的样式?

    我正在尝试编写此代码 但我在如何处理边框和其他东西中的不同颜色方面遇到了困难 到目前为止 我的 html 代码中有 buttonfilter color 0065FC background color DEEBFF height 20px
  • 如何在 Git 中查看文件历史记录?

    通过 Subversion 我可以使用乌龟SVN https en wikipedia org wiki TortoiseSVN查看文件的历史记录 日志 我怎样才能用 Git 做到这一点 我只是寻找特定文件的历史记录 然后比较不同版本的能力
  • 如何在 Angular 2 中创建导入 QuillJS 模块的组件?

    我对 Angular 2 和 TypeScript 还很陌生 我正在使用 AngularCLI 和 NPM 创建我的 Angular 项目 我已经使用 NPM 将 quill 节点模块安装到我的项目中 我现在正在尝试创建一个组件 在其中我可
  • DataGridView 自动调整大小但限制最大列大小

    在我的 C 4 0 应用程序中 我有一个 DataGridView 来显示一些数据 我希望列的大小与内容相对应 因此我将 AutoSizeColumnsMode 设置为 AllCellsExceptHeader 但我想限制列的增长超过某个值
  • Android M 检测权限对话框是否可见

    如何以编程方式确定用户是否可以看到权限对话框 以便我知道在这种情况下该怎么做 Override protected void onStart super onStart ActivityManager am ActivityManager
  • iOS 11 beta 4 呈现渲染缓冲区崩溃

    当调用 EAGLContext PresentRenderbuffer 方法时 我的应用程序在 iOS 11 beta 4 15A5327g 上崩溃 仅当我在 Xcode 中调试时才会发生这种情况 当我手动启动应用程序时 它不会崩溃 在低于
  • 从 android 中的 tabactivity 调用 listactiviy

    是否可以通过tab Activity调用listactivity 基本上 我正在开发一个带有 3 个选项卡的应用程序 为此我使用 tabactivity 此外 在其中一个选项卡中我想要一个列表视图 所以我从列表活动中派生出来 现在我想在列表
  • 如何让 VS Code 在打开文件时不打开文件资源管理器窗口

    我在 Mac 上 当我使用 VS Code 打开文件时CMD O 如下图所示 我有一台不同的机器 使用CMD O打开一个小文件资源管理器作为可编辑的地址栏 请参阅其他图像 我一直无法弄清楚哪些设置选项可以配置此功能 如何让 VS Code
  • 无法获取以 Json 形式返回的 Yii2 对象数据

    我是 Yii2 框架和 PHP 的新手 当我尝试从服务器检索模型数据时json 我得到一个空结果 但是 当我使用var dump 我得到一个非空结果 控制器类代码 public function actionIndex client new
  • bootstrap-select 下拉选项有时未加载

    我正在使用 bootstrap select 1 12 4 版本和 Angular 4 3 5 我正在尝试使用 http 调用和异步管道加载下拉选项 我面临的问题是 刷新页面时 大多数情况下都不会加载选择下拉选项 但有时选项会加载 我不确定
  • 创建存储过程(如果尚不存在)

    我想检查存储过程列表是否存在 我希望这一切都在一个脚本中一一完成 到目前为止我有这样的格式 USE myDatabase GO IF NOT EXISTS SELECT FROM sys objects WHERE type P AND n
  • 如何设置 SUDO_ASKPASS 环境变量?

    设置 SUDO ASKPASS 环境变量意味着什么 你怎么做呢 我在哪里声明 我正在尝试使用 shell 脚本在几分钟后关闭我的计算机并使用 java 启动此脚本 所以我不确定我会使用 SUDO ASKPASS为了这 基本上的价值 SUDO
  • 显示提交之间的差异

    我正在使用 GitUbuntu 10 04 https en wikipedia org wiki Ubuntu version history Ubuntu 10 04 LTS 28Lucid Lynx 29 清醒山猫 我已经向我的主人做
  • 分叉存储库 - 每次与上游同步时解决相同的合并冲突

    我已经分叉了一个存储库 但我想经常使其与上游存储库保持同步 我用自己的实现交换了一些模块 这意味着每次我想与上游存储库同步时 我都会一遍又一遍地遇到相同的合并冲突 我的问题是 有没有办法告诉 Git 对于这些情况使用我自己的实现 而不是将其
  • 转换内容位于 CDATA 内的 xml 元素

    我有一个如下所示的 xml 片段
  • Android EditText 结合InputFilter vs TextWatcher

    基本上我想了解更深入的差异和使用场景InputFilter and TextWatcher 根据文档 InputFilter 输入过滤器可以附加到可编辑项以限制可以对其进行的更改 TextWatcher 当某个类型的对象附加到可编辑对象时